Как уже говорилось, вопрос на самом деле не имеет смысла - у экземпляра есть размер, а у класса действительно нет. Поскольку вы не можете создать экземпляр, «размер» в большинстве случаев является бессмысленным понятием. Вы можете использовать sizeof(A)
, но результат мало что значит - благодаря пустой оптимизации базового класса (для одного очевидного примера), sizeof(A)
не не обязательно скажет вам, сколько при использовании A
как базовый класс будет влиять на размер производного класса.
Например:
#include <iostream>
class A {};
class B {};
class C {};
class D {};
class Z : public A, public B, public C, public D {};
int main() {
std::cout << "sizeof(A) = " << sizeof(A);
std::cout << "sizeof(Z) = " << sizeof(Z);
return 0;
}
Если я запускаю это на своем компьютере, sizeof(A)
отображается как 1. Очевидным выводом будет то, что sizeof(Z)
должно быть как минимум четыре - но в действительности с компиляторами, которые у меня есть (VC ++, g ++) отображается как три и один соответственно.