Estoy depurando un código que es esencialmente idéntico a esto:
struct Foo { int a; int b; };
struct Bar { Bar() {} Foo foo{0}; };
Cuando hago una instancia de Bar
, parece que ambos a
y b
se inicializan a cero. ¿Está esto garantizado? ¿Dónde puedo encontrar eso en la especificación?
c++
initialization
XPlatformer
fuente
fuente
struct Foo { int a{}; int b{}; };
tenga en cuenta las llaves adicionales después de los nombres de las variables. entonces siempre obtendrá valores inicializados. si necesita iniciar con otros valores, con un comportamiento definido, debe escribir un ctor como para cualquier otra claseRespuestas:
De acuerdo con cppreference.com
Foo
no tiene inicializadores miembro predeterminado (int b{0};
), por lo queb
será inicializado por lista de inicialización con una lista vacía, lo que significa el valor de inicialización para los tipos no clase:b = int() // = 0
.fuente