【发布时间】:2016-08-13 01:15:28
【问题描述】:
如果我有一个 C++ 类的层次结构,其中基类有一个声明为虚拟的成员函数,但派生类不将该函数声明为虚拟,那么虚拟化在类层次结构中进行了多远。例如,给定的代码是MyFunc2的返回值定义好了吗?
class A
{
public:
virtual int x() { return 1; }
}
class B : public A
{
public:
int x() { return 2; }
};
class C: public B
{
public:
int x() { return 3; }
};
int MyFunc1(f &A)
{
return f.x();
}
int MyFunc2(f &B)
{
return f.x();
}
int MyFunc3()
{
C c;
return MyFunc1(c);
}
int MyFunc4()
{
C c;
return MyFunc2(c);
}
从similar question here 看来,一旦它在基类中是虚拟的,虚拟特性就会向前传播到所有类,但我想知道这是如何定义的,特别是 Bx() 是虚拟的暗示源自 A。
【问题讨论】:
标签: c++ inheritance