Trong C struct, tôi đang đảm bảo rằng:Đảm bảo về địa chỉ của baseclass trong C + +?
struct Foo { ... };
struct Bar {
Foo foo;
...
}
Bar bar;
assert(&bar == &(bar.foo));
Bây giờ, trong C++, nếu tôi có:
class Foo { ... };
class Bar: public Foo, public Other crap ... {
...
}
Bar bar;
assert(&bar == (Foo*) (&bar)); // is this guaranteed?
Nếu vậy, bạn có thể cho tôi một tài liệu tham khảo (như "The C++ Programming Ngôn ngữ, trang xyz ")?
Cảm ơn!
Ghi nhận; cảm ơn. :-) g ++ gần như khiến tôi tin rằng điều đó đã được đảm bảo. – anon
Như một lưu ý phụ, tiêu chuẩn hứa hẹn rất ít về cách bố trí các loại không POD - về cơ bản chỉ là thứ tự địa chỉ của các thành viên dữ liệu không tĩnh không được phân tách bởi một trình thông số truy cập can thiệp sẽ khớp với thứ tự khai báo (nhưng chỉ trong cùng 'phần truy cập-specifier'). –