【发布时间】:2011-01-17 22:53:55
【问题描述】:
我正在学习 C++,试图编写好的多态代码,但遇到了一些困惑。我有一个 Er_1Sine 类,它有两个超类:“Generator”和“Triggerable”。
Er_1Sine 如下所示:
class Er_1Sine : public Generator, public Triggerable{
}
如果我创建一个“生成器”指针 (gen),将其设置为“er1”,则指针地址与“er1”的地址匹配。但是,我的“可触发”指针“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
【问题讨论】:
标签: c++ inheritance pointers polymorphism