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

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;

protected member: int b; private member: int d; 我无法确认 int c; 是派生类的私有成员 . 很明显, class derived 的任何新成员函数都无法访问 c . 因此,如果 cclass derived 的私有成员,则 class derived 的成员函数应该有权访问 c . 那么 c 是一个什么样的类派生成员?

回答(2)

2 years ago

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

看看这个question

2 years ago

我将用一个例子来澄清这一点 .

  • 考虑一个公共变量和方法在你家外面的房子 . 任何了解你的房子(类对象)的人都可以访问它们 .

  • 受保护的变量和方法就像你家里的公共区域一样,大厅,厨房只有你家里面的成员可以访问它们 .

  • 私人成员就像你的父亲's room (base class)(ie only your parent can go into their room and you don' t知道里面是什么)

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

base

private : int c;

protected : int b;

public : int getC() {return c;}

         int a;

derived

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;}