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

class Base
{
int i ;
};

class Derived : public Base { } ;

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

Output :
4

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

0

Решение

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

4

Другие решения

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

тогда вы можете позвонить Derived::getI(), следовательно, Derived должен включать членов частной базы.

0

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

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

-2
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector