【发布时间】:2017-02-23 01:39:51
【问题描述】:
假设我有两个班级, 一个是:
class A{
public:
void f1()
{
cout << "function 1";
}
void f2()
{
cout << "function 2";
}
void f3()
{
cout << "function 3";
}
};
现在我希望B 类包含A 的所有功能,除了f3。
我正在做的是:
class B: public A
{
private:
void f3()
{
}
};
据我所知,B::f3() 隐藏了A::f3() 的定义,并且由于B::f3() 是私有的,f3() 不能通过类B 访问。但我仍然可以这样称呼它:
B var();
var.A::f3();
有什么方法可以使用继承而不更改类 A 将 f3 从类 B 中完全隐藏?
【问题讨论】:
-
继承对扩展有用,而不是限制。你可能想在你的情况下使用组合。
-
如果子类没有其父类的所有功能,那么它可能不应该从它派生。
标签: c++ c++11 inheritance visual-c++