У меня есть вопрос о том, как компилятор C ++ знает, сколько места ему нужно выделить для объекта при использовании наследования.
Представьте себе следующие классы для взрослого и ребенка, которые расширяют класс Person, но где у ребенка есть небольшая книга с ними.
class Person
{
};
class Adult : public Person
{
//No book
};
class Child : public Person
{
char book[1000]; //Stores the book
};
Теперь, если вы создаете массив объектов Person и добавляете к ним объекты:
Adult adult1;
Child child1;
Person people[2];
people[0] = child1;
people[1] = adult1;
Мой вопрос:
Как компилятор узнает, сколько места ему нужно, чтобы массив был смежным блоком памяти, если он не знает, будет ли массив заполнен объектами Adult или Child (которые очень разных размеров)?
Надеюсь, в этом есть смысл ответить ...
Спасибо