在基类C ++中调用的虚拟基函数

时间:2018-09-14 08:36:53

标签: c++

我有一堂课

class B
{
public:
  FuncCallingFoo();

protected:
   virtual Foo (const arg argument);
}:

现在,函数Foo在类B的主体内使用,即在FuncCallingFoo定义中的某处被调用。

我也有A类,它继承自B,并且是Foo自己的实现:

class A:B
{
...

protected:
   Foo (const arg argument);
};

假设我创建了A类的实例:

A a;

此外,假设我进行以下通话:

a.FuncCallingFoo();

这是否将导致调用A类的Foo?

1 个答案:

答案 0 :(得分:1)

否,因为您已声明Fooclass AB中受保护,并且尚未请求public继承:class A:B(是的,仍然是有效的C ++)。

实际上,由于此问题,您的程序(在修复了默认的返回值和参数错误之后)将无法编译。

请参阅:Difference between private, public, and protected inheritance