Предположим, что существует два класса Base и DerivedКаков размер класса, когда он унаследован от класса, у которого все его члены закрыты в C++?
class Base
{
private:
int a;
}
class Derived:public Base
{
private:
int b;
}
int main()
{
Derived d;
cout<<sizeof(d);
}
Выход 8. Теперь мой вопрос, когда переменная член базового класса является приватным и производный класс не может наследовать его, то почему он включает элемент данных, когда показывая размер класса?
Чтобы выразить это прямо, потому что 'Derived' является' Base'. Спецификаторы доступа просто контролируют, кто и где может что-то получить. – jrok
@jrok: На самом деле отношения is-a не относятся к частному наследованию. – abarnert
@abarnert Фактически, если речь идет о макете * класса (это целая тема здесь), она * делает * удержание. Это не может быть иначе, иначе ад сломается. – syam