我正在了解C++,我有一个问题。
我正在学习虚函数,我发现为什么我们需要 cpp 中的虚函数。
我尝试了答案,现在我知道为什么我们需要虚拟功能,但我不明白,
下面的代码工作正常。
class a
{
public:
virtual void eat(){ std::cout<<"Eating A food." << endl;
};
class b : public a
{
public:
void eat(){ std::cout<<"Eating B food." << endl;
}
void eatFunction(a * alpha){ alpha -> eat(); }
int main(void)
{
a * apple = new a;
b * banana = new b;
eatFunction(apple);
eatFunction(banana);
return 0;
}
但我只是将class b: public a
更改为发生错误class b : a
:
error: 'a' is an inaccessible base of 'b'
eatFunction(banana);
我什么时候应该使用"公共"继承父类?
有什么不同?
class b: public a{/*..*/};
b
继承自公开a
(即所有成员函数和 var 都在b
中继承,访问说明符与它们在a
中具有的访问说明符相同
class b: a{/*..*/};
b
私下从a
继承(即所有成员函数和 var 都b
继承private
访问说明符。 因此,您无法eatFunction
类外部访问函数。
class b : a {};
与
class b : private a {};
因为a
是b
的private
基类,b*
不能隐式转换为a*
。