C++私有继承看不懂

2025-03-06 14:13:37
推荐回答(2个)
回答1:

我来一一回答你问题:

1 这个图片中 派生类b继承基类a的过程中那个k是根本就没有了是吗?

 答: 对,派生类B继承基类A的过程中那个k,在B中根本是不可见的。你可以认为它没有了(销声匿迹,无论如何也访问不到了)。

2 为什么基类的i j变成派生类中的私有了?

答:因为是私有继承,你可以这样:

    无论何种继承,在派生类B中,你都将A中继承过来的成员都加上这种继承权限:

        ***如若是公有继承,在B中,你可以将A中的 i j k都加上public.

        那么结果是:

                    public    public:   int i,j;        //俩public结果还是public。对吧?故i,j在B中还是public权限。
                    public    private:  int k;        //private比public更严密,所以取private。故k在B中是private权限。


    ***同理,如果是私有继承,你自己在草稿纸上按照我的方法写一下:

                  private    public: int i, j;      //因为private比public更严密,所以取private。故i,j在B中是private权限。
                   private   private:  int k;        //两个private结果还是private。故k在B中是private权限。


--------------------

就是以上这些,看懂了吧?不懂继续追问

回答2:

“派生类b继承基类a的过程中那个k是根本就没有了是吗?”:是的,父类的私有成员是不能被继承的,只要是私有继承,父类的能被继承的东西都会变成私有的。

下面是引用的:
继承与派生机制的核心是在派生类中加入新的成员,程序员可以根据实际情况的需要,给派生类添加适当的数据成员和成员函数,来实现必要的新功能。
派生类对基类各种成员访问权限如下:
(1)基类公有成员和保护成员都相当于派生类的私有成员,派生类只能通过自身的函数成员访问他们。
(2)对于基类的私有成员,无论派生类内部成员或派生类使用者都无法直接访问