我对运行时多态性略有困惑。纠正我,如果我错了,但据我所知,运行时多态性意味着函数定义将在运行时解决。运行时多态性究竟意味着什么?
拿这个例子:
class a
{
a();
~a();
void baseclass();
}
class b: class a
{
b();
~b();
void derivedclass1();
}
class c: class a
{
c();
~c();
void derivedclass2();
}
调用方法:
b derived1;
a *baseptr = &derived1; //here base pointer knows that i'm pointing to derived class b.
baseptr->derivedclass1();
在上面的调用方法,基类的都知道,它的指向派生类B.
那么歧义存在哪里呢?
在什么情况下函数定义会在运行时被解析?
含糊不清?您发布的代码不会显示任何形式的多态。 – 2010-08-11 09:49:05
事实上,代码不会编译,因为您不能使用指向'a'的指针调用'derivedclass1'(除非您明确地首先将其转换为'b')。 – sepp2k 2010-08-11 09:50:39