Я тестировал размер базовых классов и производных классов на C++.Размер класса в C++
class X {};
class Y : public virtual X {};
class Z : public virtual X {};
class A : public Y, public Z {};
Размер каждого X, Y, Z, A достиг 1,8,8,12 соответственно. Я не могу это понять. Я знаю, что размер по умолчанию для пустого класса равен 1. Поэтому я мог понять, что sizeof X равен 1. Я знаю, что размер Y и Z не будет таким, каким будет добавлен virtual_pointer. Но 8? Я не понимаю. Может кто-нибудь объяснить?
Ориентация указателя. –
Это называется неуказанным поведением: реализация может делать все, что он хочет, чтобы программа работала правильно, и нет требования, чтобы поведение было документировано или даже надежно. – DanielKO