два значения, напечатанные под могут быть разными. Зачем?
Предполагая, что A
является основой B
так, что назначение действительно, это не может быть единственной основой B
(и, в частности, он не может быть первого основания), и в этом случае будет быть смещение:
struct A { int x; };
struct A_ { int y; }
struct B : A_, A {};
int main() {
B b;
assert(static_cast<void*>(&b) != static_cast<void*>(static_cast<A*>(&b)));
}
Кроме того, если отношения наследования является виртуальным, то они не будут запускаться по тому же адресу либо:
struct A {};
struct B : virtual A {};
int main() {
B b;
assert(static_cast<void*>(&b) != static_cast<void*>(static_cast<A*>(&b)));
}
Woah, не надо. Не спрашивайте об этом в одном вопросе. Сделайте это ... один вопрос на вопрос. Прочитайте [FAQ] (http://stackoverflow.com/faq) и * попробуйте * сначала отвечая на вопрос. Люди помогут, но никто не сделает вам домашнюю работу. –
Что это за «оператор вывода»? Вы ссылаетесь на «<<»? Ха-ха – poitroae
Подождите, черт возьми, мы возьмем эту викторину для него? – SimplyPanda