【发布时间】:2013-07-02 05:35:06
【问题描述】:
struct A{
virtual void fun(){cout<<"A";}
};
struct B:public A{
void fun(){cout<<"B";}
};
struct C:public B{
void fun(){cout<<"C";}
};
int main()
{
C c;B b1;
A *a=&b1;
a->fun(); //1
B *b=&c;
b->fun(); //2
return 0;
}
在上面的代码中,B::fun() 被隐式转换为虚函数,因为我已将 A::fun() 设为虚拟。我可以停止这种转换吗?
如果不可能的话,有什么替代方法可以让上面的代码打印“BB”?
【问题讨论】:
-
如果你不想要一个虚函数……你为什么一开始就在基类中把它变成虚函数?
-
我希望 A::fun() 是虚拟的
-
@banarun 如果你不想让它像一个虚函数一样,为什么?
标签: c++ oop virtual-functions