mor*_*des 2 c++ polymorphism inheritance pointers
我正在学习C++,试图编写好的,多态的代码,然后遇到一些困惑.我有一个Er_1Sine类,它有两个超类:"Generator"和"Triggerable".
Er_1Sine看起来像这样:
class Er_1Sine : public Generator, public Triggerable{
}
Run Code Online (Sandbox Code Playgroud)
如果我创建一个"Generator"指针(gen),将其设置为"er1",则指针地址与"er1"的地址匹配.但是,我的"可触发"指针"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
Run Code Online (Sandbox Code Playgroud)