Наследовать сразу или наследовать по одномуC++

Программы на C++. Форум разработчиков
Anonymous
Наследовать сразу или наследовать по одному

Сообщение Anonymous »

#Senario:

(1) допустим, существует такая цепочка наследования (последующие, в свою очередь, наследуют от предыдущего):

Код: Выделить всё

parent->child1->child2->child3->...->child_n;
(2) Итак, у нас есть расположение данных каждого из них:

Код: Выделить всё

parent: DATA
child1: DATA1 = DATA + extra1
child2: DATA2 = DATA1 + extra2  = DATA +extra1,2
...
chidl_n: DATA_n = DATA_n-1 + extra_n = DATA + extra1,2,..., n
(3) А затем создайте класс, наследующий их все сразу:

Код: Выделить всё

 MyClass: public parent, child1, child2, child3, ..., child n;
Вопрос: Каким должно быть расположение данных MyClass?
А. Точно так же, как "chidl_n" выше?

Б. Отличается от "child_n", если да, то чем оно отличается и как его данные организованы в памяти?

--------------------- ----РЕДАКТИРОВАТЬ:

Мне очень жаль, что я так беспокою. Но после прочтения ответа у меня возник прямой вопрос.

Для child_n легко выполнить приведение к любому из его родителей (

Код: Выделить всё

parent, child 1,...,child_n-1
), поскольку они имеют один и тот же начальный адрес.

Однако насколько я знаю, из MyClass мы также можем выполнить приведение к любому из его родителей (

Код: Выделить всё

parent, child 1,...,child_n
), даже если они не имели один и тот же адрес, согласно ответу.

Интересно, как им управляют и обрабатывают возврат определенного подобъекта MyClass, поскольку они не имеют общего один и тот же начальный адрес.

Они хранили много начальных адресов для каждого подкласса? или Будут ли они выполнять вычисление адреса только при каждом вычислении приведения?

Подробнее здесь: https://stackoverflow.com/questions/786 ... one-by-one

Вернуться в «C++»