initializer lists c
Explore tudo sobre listas de inicializadores em C ++ com exemplos em detalhes.
C ++ usa listas de inicializadores para inicializar os membros de dados com seus valores.
As listas de inicializadores são usadas principalmente em situações específicas em que não é possível inicializar os valores no corpo do construtor.
como eu abro um arquivo json?
=> Clique aqui para obter o curso C ++ grátis.
Listas de inicializadores em C ++
A sintaxe geral da lista do inicializador é:
constructorName(type value1, type value2):datamember(value1), datamember(value2) { //constructor code }
Algumas dessas situações em que as listas de inicializadores são usadas estão listadas abaixo:
# 1) Um construtor padrão não é fornecido para a classe de objeto membro.
Quando temos outro objeto de classe como membro da classe e a classe desse objeto não tem construtor padrão, inicializamos esse objeto membro de dados usando a lista de inicializadores.
Isso é mostrado no programa a seguir.
#include using namespace std; class A { int i; public: A(int ); }; A::A(int val) { i = val; cout << 'Constructor ::A ; i = ' << i << endl; } class B { A a; public: B(int ); }; B::B(int val):a(val) { cout << 'Constructor :: B'; } int main() { B obj(10); return 0; }
Resultado:
Construtor :: A; i = 10
Construtor :: B
No programa acima, o objeto da classe A é um membro de dados da classe B. Na classe A, temos um construtor parametrizado, mas não um construtor padrão. Portanto, precisamos usar a lista de inicializadores na classe B, a fim de criar o objeto da classe A.
# 2) Inicializando C nossos membros de dados.
Como membros de dados const podem ser inicializados apenas uma vez, nós os inicializamos usando a lista de inicializadores.
Demonstramos isso usando o seguinte exemplo.
#include using namespace std; class sample { private: const int val; public: sample(int val):val(val) { cout << 'Value is ' << val; } }; int main() { sample obj(10); }
Resultado:
O valor é 10
No programa acima, temos um const como membro de dados. Se tivermos que inicializar esse membro const com um valor, faremos isso usando a lista de inicializadores, conforme mostrado.
# 3) Para inicializar tipos de dados de referência.
Como referências constantes são imutáveis. Portanto, sempre que precisamos inicializar os membros de dados do tipo de referência, usamos listas de inicializadores.
No programa a seguir, inicializamos o membro de dados de referência usando a lista de inicializadores.
#include using namespace std; class sample { private: int &ref_val; public: sample(int &ref_val):ref_val(ref_val) { cout << 'Value is ' << ref_val; } }; int main() { int ref=10; sample obj(ref); return 0; }
Resultado:
O valor é 10
Neste programa, temos uma referência como membro de dados e a inicializamos usando a lista de inicializadores.
# 4) Quando o nome do membro e o parâmetro têm o mesmo nome.
perguntas da entrevista c ++ para profissionais experientes
Quando os nomes de membros de uma classe devem ser inicializados com os parâmetros e esses parâmetros têm os mesmos nomes que os nomes de membros, usamos a lista de inicializadores. Em nossos tópicos anteriores, usamos esse ponteiro para a mesma situação. A segunda opção é a lista de inicializadores.
Modificamos o exemplo acima com este ponteiro para fazer uso da lista de inicializadores no programa a seguir.
#include using namespace std; class Sample { private: int num; char ch; public: Sample(int num,char ch):num(num),ch(ch){ cout<<'num = '< Resultado:
num = 100
ch = A
Neste programa, passamos parâmetros para inicializar os membros de dados com os mesmos nomes. Nesse caso, usamos a lista de inicializadores para esse propósito.
# 5) Para melhorar o desempenho
Cada vez que inicializamos os membros de dados no corpo do construtor, um objeto temporário é criado para o membro de dados enquanto atribuímos valores. Assim que a atribuição for concluída, este objeto temporário é excluído. Na verdade, isso é uma sobrecarga.
Se usarmos a lista de inicializadores, por outro lado, um construtor de cópia é usado para atribuir valores. Isso melhora significativamente o desempenho.
Conclusão
Portanto, neste tutorial, aprendemos sobre as listas de inicializadores junto com muitas situações em que precisamos usá-las na programação C ++.
Embora não precisemos usar a lista de inicializadores quando essas situações não estiverem presentes, sempre podemos usá-las para melhorar o desempenho do programa.
Em nosso próximo tutorial, discutiremos as funções de amigo em C ++ em detalhes.
=> Veja aqui para explorar a lista completa de tutoriais C ++.
Leitura recomendada