Предположим, у вас есть два класса, как показано ниже
class Car {
int make;
public:
Car(int m): make(m) {}
int getMake() { return make; }
};
class Audi : public Car{
int internalID;
public:
Audi(int m, int id): Car(m), internalID(id){}
int getInternalID() { return internalID; }
};
Теперь я иду вперед и создаю объект Audi
Audi *myCar = new Audi(2012 /*make*/, 216487 /*internal ID*/);
вы можете сделать что-то вроде
myCar->getInternalID(); //returns 216487
myCar->getMake(); //returns 2012
Если ваше предположение, что создание производного класса должно выделять пространство только для производных членов, где в этом случае будет храниться «make»?
Производный класс - это не что иное, как базовый класс + члены, объявленные в производном классе. Следовательно, ваш производный объект будет выглядеть примерно так в памяти
------------
| make |
------------
| internalID|
-------------
Следовательно, вы получите размер производных членов класса плюс размер базового класса. Опять же, размер базового класса будет размером членов базового класса плюс размер его базового класса. Надеюсь, это поможет!