Я изучаю C ++, пытаюсь написать хороший, полиморфный код и прибегаю к некоторой путанице.У меня есть класс Er_1Sine, который имеет два суперкласса: «Генератор» и «Триггерный».
Er_1Sine выглядит следующим образом:
class Er_1Sine : public Generator, public Triggerable{
}
Если я создаю указатель «Генератор» (gen), устанавливая его в «er1», адрес указателя соответствует адресу «er1».Однако адрес моего указателя «Triggerable», «trig», не совпадает.Что тут происходит?trig не указывает на тот же объект, что и er1 и gen?
er1 = new Er_1Sine();
Generator *gen = er1;
Triggerable *trig = er1;
printf("\n\n er1 as Er_1Sine: %p \n", er1);
// outputs: "er1 as Er_1Sine: 0x4d28920"
printf("er1 as Generator address: %p \n", gen);
// outputs: "er1 as Generator address: 0x4d28920"
printf("er1 as Triggerable address: %p \n\n", trig);
// outputs: er1 as Triggerable address: 0x4d289f8