我有一堂课
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?
答案 0 :(得分:1)
否,因为您已声明Foo
在class A
和B
中受保护,并且尚未请求public
继承:class A:B
(是的,仍然是有效的C ++)。
实际上,由于此问题,您的程序(在修复了默认的返回值和参数错误之后)将无法编译。
请参阅:Difference between private, public, and protected inheritance