C++问题,基类中有一个成员函数,如何使继承它的子类唯独不继承这个成员函数

之前问了一些人,他们说把这个成员函数声明成private。但是我查了一下,所有权限的变量和函数都会被继承,只是有的权限无法访问而已。
所以想请问,如何才能让子类中没有这个成员函数?

3个回答

基类的成员都会被继承,或以不同的形式。解决办法只能是定义一个新的基类A,并含有原基类:类B除那个成员函数以外所有成员;原基类:类B改为继承自A,并定义那个成员函数;类C由继承自B改为继承自A,并不定义那个成员函数

既然你知道----所有权限的变量和函数都会被继承,那么这个成员函数 也一定是子类的成员函数,这是因为继承决定的。
如果想让子类中没有这个成员函数,只能隐藏或继承为私有。

也就是

 class B
 {
 //members
 public:
 foo();
 };

 class C : public B{};

改为

 class A
 {
 //原来B的成员
 };

 class B : public A
 {
 //只需定义一个foo();
 public:
 foo();
 };

 class C : public A{};

这样就有B有而C没有的成员函数了, 并且和 C继承自B 也没什么区别, 通过更改class A也可以重构整个继承链的基类成员

立即提问
相关内容推荐