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
course content

Conteúdo do Curso

C++ Poo

C++ Poo

1. Fundamentos de POO em C++
2. Construtores e Destrutores
3. Visão Geral do Encapsulamento
4. Visão Geral de Herança
5. Visão Geral do Polimorfismo

book
Lista 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

course content

Conteúdo do Curso

C++ Poo

C++ Poo

1. Fundamentos de POO em C++
2. Construtores e Destrutores
3. Visão Geral do Encapsulamento
4. Visão Geral de Herança
5. Visão Geral do Polimorfismo

book
Lista 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
some-alt