Assim como em C, variáveis globais e estáticas em C ++ são automaticamente inicializadas para o valor 0 quando declaradas caso um valor diferente não seja especificado. Variáveis automáticas, que são declaradas dentro do escopo de uma função, não são inicializadas pelo sistema, e receberão o valor que (por acaso) esteja na posição de memória correspondente àquela variável -- em outras palavras, recebe ``lixo''. O próximo exemplo ilustra estas diferenças.
indentation
stuff has the value 14 another_stuff has the value 17 more_stuff has the value 13 count has the value 3 count2 has the value D count has the value 4 count2 has the value E count has the value 5 count2 has the value F count has the value 6 count2 has the value G count has the value 7 count2 has the value H goofy has the value 0
Observe o uso do símbolo & neste exemplo. Neste caso, another_stuff é definido como uma variável de referência, o que é também uma particularidade de C ++.
A variável de referência não é usualmente usada neste contexto; o objetivo neste caso é apenas de ilustrar sua funcionalidade. Esta variável não funciona exatamente como as outras variáveis porque ela funciona como se fosse um apontador derreferenciado. Seguindo sua inicialização, a variável de referência se torna um sinônimo para a variável stuff; mudanças no valor de stuff se refletirão no valor de another_stuff, pois efetivamente elas se referem ambas para a mesma variável. O sinônimo pode ser usado para acessar a variável para qualquer propósito legal da linguagem.
Deve-se observar que a variável de referência deve ser inicializada para referenciar outra variável quando ela é declarada; caso contrário, o compilador deve acusar um erro. Após a inicialização, a variável de referência não pode ser modificada para indicar uma variável diferente.
No contexto em que foi mostrado neste exemplo, o uso de variáveis de referência pode levar à confusão de código. Entretanto, mais adiante serão apresentados casos onde seu uso leva, de fato, a codificação mais clara e elegante.
O exemplo anterior também ilustra uma outra característica de C ++, a possibilidade de se definir variáveis (como more_stuff e goofy) no meio de uma função. Em C, todas variáveis de uma função deviam ser definidas antes do primeiro comando; em C ++, variáveis podem ser definidas mais próximas dos pontos onde elas serão efetivamente utilizadas. Tais variáveis têm escopo a partir do ponto onde são declaradas até o final do bloco onde foram definidas.
Observe também neste exemplo o uso desta característica no comando de laço for: a variável count é definida no apenas no início do laço, no ponto onde ela será utilizada. Neste caso, como esta variável foi definida fora do bloco do laço, seu escopo permanece até o fim da função (fim do bloco onde foi definida). Já a variável count2, definida dentro do bloco do laço, é liberada a cada fim de execução do laço e então realocada na próxima execução do laço (cinco vezes).