【发布时间】:2016-03-26 09:56:18
【问题描述】:
class A
{
public:
virtual void display_A(A* obja)
{
cout<<"Class A"<<endl;
}
};
class B:public A
{
public:
void display_A(B* objb)
{
cout<<"Class B"<<endl;
}
};
int main()
{
A AOBJ;
B BOBJ;
A *obja = new B();
obja->display_A(&AOBJ);
obja->display_A(&BOBJ);
return 0;
}
类 A 中有一个虚函数,其参数为 A*,我们正在使用参数 B* 覆盖派生 class B 中的相同函数。
我创建了一个指针obja(指向类A),它指向派生类对象B。当我使用 obja 指针和参数作为类 A 对象指针和类 B 对象指针调用函数 display_A 时,我得到 o/p 为
Class A
Class A
我无法理解为什么我会得到那个 o/p。
【问题讨论】:
-
无论如何您都可以重新考虑设计。您使用一种对象显示方法来显示另一个对象。如果对象使用自己的显示方法来显示会不会更好(这种情况下不需要显式传递指针作为参数)?
标签: c++ overriding virtual-functions