基类私有成员属于Derived类的哪个部分?

时间:2017-07-29 06:13:01

标签: c++ inheritance

======= RESTART: C:/listByMap.py =======
['b', 'c', 'a', 'z', 'b', 'c']
['c', 'd', 'b', 'z', 'c', 'd']

现在,派生类有公共成员:

class base {
    public:
        int getC() {return c;}
        int a;
    protected:
        int b;
    private:
        int c;
}

class derived: public base {
    public:
        int getD() {return d;}
    private:
        int d;
}

受保护的成员: int getC() {return c;} int getD() {return d;} int a; 私人会员: int b; 如果 int d; 是派生类的私有成员,我无法确认。很明显,int c;的任何新成员功能都无法访问class derived。因此,如果cc的私人成员,则class derived的成员函数应有权访问class derived。那么c是什么类的成员派生出来的呢?

2 个答案:

答案 0 :(得分:1)

  

派生类不会继承对私有数据成员的访问权限。但是,它确实继承了一个完整的父对象,该对象包含该类声明的任何私有成员。

看看这个question

答案 1 :(得分:0)

我将以一个例子来澄清这一点。

  • 考虑一个公共变量和方法在你家之外的房子 屋。任何了解你的房子(类对象)的人都可以访问它们。
  • 受保护的变量和方法就像你家里的公共区域一样,大厅,厨房只有你家里面的成员可以访问它们。
  • 私人会员就像您父母的房间(基类)(即只有您的父母可以进入他们的房间,而您不知道里面是什么)

现在提出问题,每个类访问修饰符都有以下安排

基础

private : int c;

protected : int b;

public : int getC() {return c;}

         int a;

派生

private : int d; (derived will never know c's existense)
protected : int b; (base class's copy)    
public : int getC() {return c;}    
         int a;
         int getD() {return d;}