之前问了一些人,他们说把这个成员函数声明成private。但是我查了一下,所有权限的变量和函数都会被继承,只是有的权限无法访问而已。
所以想请问,如何才能让子类中没有这个成员函数?
基类的成员都会被继承,或以不同的形式。解决办法只能是定义一个新的基类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也可以重构整个继承链的基类成员