En struct de C, que es garantizado que:¿Garantías en la dirección de la clase base en C++?
struct Foo { ... };
struct Bar {
Foo foo;
...
}
Bar bar;
assert(&bar == &(bar.foo));
Ahora, en C++, si tengo:
class Foo { ... };
class Bar: public Foo, public Other crap ... {
...
}
Bar bar;
assert(&bar == (Foo*) (&bar)); // is this guaranteed?
Si es así, ¿me puede dar una referencia (como "La programación C++ Idioma, página xyz ")?
Gracias!
anotada; Gracias. :-) g ++ casi me hizo creer que estaba garantizado. – anon
Como nota al margen, la norma promete muy poco sobre el diseño de tipos no POD; básicamente, solo que el orden de direcciones de los miembros de datos no estáticos no separados por un especificador de acceso intermedio coincidirá con el orden de declaración (pero solo dentro de la misma 'sección de especificador de acceso'). –