Пустой производный класс, унаследованный от непустого базового класса

class Base 
{
   int i ;
};

class Derived : public Base { } ;

int main()
{
   cout << sizeof(Derived);
}

Output :
 4

В базовом классе, поскольку я является частным, он не должен наследоваться от производного класса. Следовательно, Базовый класс должен действовать как пустой класс. И размер пустого класса равен 1, тогда почему он отображается как 4?

3 ответа

Derived класс по-прежнему содержит i в Base, это просто не доступно, поэтому размер 4 из-за i

Размер по-прежнему 4, потому что размер Base 4. Допустим, например, что Base имеет функцию public: int getI() {return i;}тогда вы можете позвонить Derived::getI(), следовательно, Derived должен включать членов частной базы.

Здесь, производный класс определен публично.. означает здесь в определении ": публичная база"

таким образом, производный класс может получить доступ как ко всем открытым, так и к закрытым членам базового класса. Он сделает все закрытые члены общедоступными в этом производном классе. Таким образом, выходные данные равны 4 унциям i.not 1. Если вы пишете private, то это даст вывод 1..

Другие вопросы по тегам