Estou depurando algum código que é essencialmente idêntico a isso:
struct Foo { int a; int b; };
struct Bar { Bar() {} Foo foo{0}; };
Quando eu faço uma instância de Bar
, parece que ambos a
e b
são inicializados com zero. Isso é garantido? Onde posso encontrar isso nas especificações?
c++
initialization
XPlatformer
fonte
fonte
struct Foo { int a{}; int b{}; };
lembre-se das chaves extras após os nomes das variáveis. você sempre obterá valores inicializados. se você precisa para o init com outros valores, com comportamento definido, você precisa escrever um ctor como para uma todas as outras classesRespostas:
De acordo com cppreference.com
Foo
inicializadores não tem membro padrão (int b{0};
), entãob
serão inicializados por uma lista-de inicialização com uma lista vazia, o que significa valor de inicialização para tipos não-classe:b = int() // = 0
.fonte