【发布时间】:2015-10-26 13:51:51
【问题描述】:
我在代码示例中读到了一些奇怪的东西。有一个基类和一个派生类。派生类是从具有公共继承的基类派生的。
class baseClass
{
public:
void foo();
}
class derivedClass : public baseClass
{
protected:
void foo();
}
派生类还覆盖方法foo() 的访问器。 foo() 在baseClass 中是public,在derivedClass 中是protected。它可以构建和工作,但我不明白为什么有人会这样做,以及在多大程度上允许这样做。例如,protected 缩小了访问范围,所以它是允许的,但你不能用 public 覆盖基类受保护的方法?我不知道。
【问题讨论】:
-
它不会覆盖,它会隐藏。
-
抱歉,我显然使用了错误的术语。你能解释一下区别吗?
-
在
derivedClass中定义了一个新的foo(),并隐藏了基类的foo(),即不能从派生类中调用。derivedClass中的新foo()与基类的无关,即与基类成员foo()的访问无关。 -
只有虚成员函数可以被覆盖。
标签: c++ inheritance public protected