In C-Struktur ist, bin ich, dass garantiert:Garantien für die Adresse der Basisklasse in C++?
struct Foo { ... };
struct Bar {
Foo foo;
...
}
Bar bar;
assert(&bar == &(bar.foo));
nun in C++, wenn ich:
class Foo { ... };
class Bar: public Foo, public Other crap ... {
...
}
Bar bar;
assert(&bar == (Foo*) (&bar)); // is this guaranteed?
Wenn ja, können Sie mir einen Hinweis geben (wie „The C++ Programming Sprache, Seite xyz ")?
Danke!
Noted;:
Dies würde jedoch nicht garantiert werden, Vielen Dank. :-) g ++ hat mich fast glauben lassen, dass das garantiert war. – anon
Als eine Randnotiz verspricht der Standard nur sehr wenig über das Layout von Nicht-POD-Typen - im Grunde nur, dass die Adressreihenfolge von nicht statischen Datenelementen, die nicht durch einen dazwischenliegenden Zugriffsspezifizierer getrennt sind, der Deklarationsreihenfolge entspricht (aber nur innerhalb von der gleiche "Access-Specifier-Abschnitt"). –