Размеры классов с виртуальным наследованием в C ++
#include<iostream>
using namespace std;
class abc
{
int a;
};
class xyz : public virtual abc
{
int b;
};
int main()
{
abc obj;
xyz obj1;
cout<<endl<<sizeof(obj);
cout<<endl<<sizeof(obj1);
return 0;
}
Ответы будут зависеть от компилятора, но я удивляюсь, когда вижу это как результат
~/Documents/workspace/tmp ‹.rvm-› $ ./class_sizes
4
16
Если я удалю виртуальное ключевое слово, то выделенный размер будет 4 и 8 соответственно, что я и ожидал.
Почему дополнительное место занято точно? Я подозреваю, что это для таблицы vptr или что-то в этом роде, но не знаю наверняка.