a450985184
2016-07-14 06:05
采纳率: 100%
浏览 1.8k
已采纳

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • Liu_yuxuan 2016-07-14 06:31
    已采纳

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

    点赞 评论
  • ljheee 2016-07-14 06:13

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

    点赞 评论
  • Liu_yuxuan 2016-07-14 06:51

    也就是

     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也可以重构整个继承链的基类成员

    点赞 评论

相关推荐 更多相似问题