Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Lista de Inicialização do Construtor | Construtores e Destrutores
C++ Poo

bookLista de Inicialização do Construtor

Uma lista de inicialização permite que construtores inicializem membros da classe antes da execução do corpo do construtor. É especialmente útil para inicializações complexas ou ao trabalhar com objetos de classes que possuem membros const.

Sintaxe da Lista de Inicialização

A sintaxe das listas de inicialização pode parecer excessivamente complexa e confusa. Pode-se considerar utilizar apenas um construtor como uma alternativa mais simples. No entanto, à medida que o programa cresce, as listas de inicialização demonstram ser convenientes e diretas de utilizar.

  • : (símbolo de dois-pontos): introduz a lista de inicialização de membros em um construtor;

  • member (value): uma variável membro da classe sendo inicializada com o valor (argumento passado para o construtor);

  • { } (chaves): o corpo do construtor, onde código adicional pode ser executado após a inicialização dos membros.

temperature_sensor.h

temperature_sensor.h

copy
1234567
class TemperatureSensor { public: TemperatureSensor(int initialTemperature) : currentTemperature(initialTemperature) {} int currentTemperature; };

Limitações e Considerações

Existe um equívoco comum em relação à ordem de inicialização na lista de inicialização. Ao contrário do que muitos pensam, a inicialização das variáveis na lista de inicialização não segue a ordem em que são escritas. Em vez disso, ela é determinada pela ordem de declaração dos membros na classe, e não pela sequência na lista de inicialização.

main.cpp

main.cpp

copy
123456789101112131415
#include <iostream> class Exchanger { public: Exchanger(float _quantity, float _rate) : quantity(_quantity), rate(_rate), total(quantity * rate) {} float quantity, rate, total; }; int main() { Exchanger exchanger(100, 0.3); std::cout << exchanger.total; }
Note
Nota

Tente alterar a ordem de inicialização da variável total na lista de inicialização e na declaração da variável dentro da class.

Ao utilizar listas de inicialização em um construtor, o argumento pode ter o mesmo nome que o atributo da class.

main.cpp

main.cpp

copy
123456789101112131415
#include <iostream> class Exchanger { public: Exchanger(float quantity, float rate) : quantity(quantity), rate(rate), total(quantity * rate) {} float quantity, rate, total; }; int main() { Exchanger exchanger(100, 0.3); std::cout << exchanger.total; }

Mas se você usar o mesmo nome tanto para as variáveis membro quanto para os argumentos, o total assumirá o valor dos argumentos multiplicados, não dos membros. Para verificar isso, tente definir quantity como zero em vez do argumento.

1. O que é uma lista de inicialização do construtor?

2. Qual símbolo introduz a lista de inicialização de membros em um construtor?

question mark

O que é uma lista de inicialização do construtor?

Select the correct answer

question mark

Qual símbolo introduz a lista de inicialização de membros em um construtor?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 3

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Awesome!

Completion rate improved to 3.13

bookLista de Inicialização do Construtor

Deslize para mostrar o menu

Uma lista de inicialização permite que construtores inicializem membros da classe antes da execução do corpo do construtor. É especialmente útil para inicializações complexas ou ao trabalhar com objetos de classes que possuem membros const.

Sintaxe da Lista de Inicialização

A sintaxe das listas de inicialização pode parecer excessivamente complexa e confusa. Pode-se considerar utilizar apenas um construtor como uma alternativa mais simples. No entanto, à medida que o programa cresce, as listas de inicialização demonstram ser convenientes e diretas de utilizar.

  • : (símbolo de dois-pontos): introduz a lista de inicialização de membros em um construtor;

  • member (value): uma variável membro da classe sendo inicializada com o valor (argumento passado para o construtor);

  • { } (chaves): o corpo do construtor, onde código adicional pode ser executado após a inicialização dos membros.

temperature_sensor.h

temperature_sensor.h

copy
1234567
class TemperatureSensor { public: TemperatureSensor(int initialTemperature) : currentTemperature(initialTemperature) {} int currentTemperature; };

Limitações e Considerações

Existe um equívoco comum em relação à ordem de inicialização na lista de inicialização. Ao contrário do que muitos pensam, a inicialização das variáveis na lista de inicialização não segue a ordem em que são escritas. Em vez disso, ela é determinada pela ordem de declaração dos membros na classe, e não pela sequência na lista de inicialização.

main.cpp

main.cpp

copy
123456789101112131415
#include <iostream> class Exchanger { public: Exchanger(float _quantity, float _rate) : quantity(_quantity), rate(_rate), total(quantity * rate) {} float quantity, rate, total; }; int main() { Exchanger exchanger(100, 0.3); std::cout << exchanger.total; }
Note
Nota

Tente alterar a ordem de inicialização da variável total na lista de inicialização e na declaração da variável dentro da class.

Ao utilizar listas de inicialização em um construtor, o argumento pode ter o mesmo nome que o atributo da class.

main.cpp

main.cpp

copy
123456789101112131415
#include <iostream> class Exchanger { public: Exchanger(float quantity, float rate) : quantity(quantity), rate(rate), total(quantity * rate) {} float quantity, rate, total; }; int main() { Exchanger exchanger(100, 0.3); std::cout << exchanger.total; }

Mas se você usar o mesmo nome tanto para as variáveis membro quanto para os argumentos, o total assumirá o valor dos argumentos multiplicados, não dos membros. Para verificar isso, tente definir quantity como zero em vez do argumento.

1. O que é uma lista de inicialização do construtor?

2. Qual símbolo introduz a lista de inicialização de membros em um construtor?

question mark

O que é uma lista de inicialização do construtor?

Select the correct answer

question mark

Qual símbolo introduz a lista de inicialização de membros em um construtor?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 3
some-alt