关于继承的问题

时间:2009-07-15 03:02:40

标签: c++

class B{
private:
   void DoSomething();
}

class W{
private: 
   class D: public B{
   }

   D d; 
}

我可以在W类的范围内调用D的基类中的私有成员函数吗?

3 个答案:

答案 0 :(得分:5)

不。除了拥有它的类之外,你永远不能从任何地方调用私有成员函数。如果您希望派生类能够访问它,请将其声明为受保护的。

你也可以宣布D是B级的“朋友”;这将允许D访问B.DoSomething()。但是,这种方法通常不受欢迎。

答案 1 :(得分:1)

只有在声明为公共或私有的情况下,才可以在类外部访问DoSomething函数。除了Aric上面提到的,继承的类可以成为实现同样的朋友。

替代方法是将函数声明/定义为虚拟,并且不定义子/继承类的虚拟定义。这样做,将调用基类的函数定义。

答案 2 :(得分:1)

不,如果您使用 protected 关键字,那么您可以。它是一个嵌套类的事实是无关紧要的。