我想知道关于c ++中类派生的一些事情 所以我有超类x和继承类y 我做了这个
class x{
public:a;
private:b;
protected:c;
}
class y:public x{
public:d;
}
在这种情况下y如何访问a,b和c以及我的意思(公共,受保护,私有)
第二种情况:
class x{
public:a;
private:b;
protected:c;
}
class y:private x{
public:d;
}
同样的问题?
第三种情况:
class x{
public:a;
private:b;
protected:c;
}
class y:protected x{
public:d;
}
同样的问题?
抱歉,我觉得我写的太多了 再见答案 0 :(得分:5)
在所有形式的继承中:
y
可以查看其基类(x
)并查看public
和protected
。y
的派生类可以看到其public
和protected
成员。y
的用户可以看到其public
成员。private
,除非他们是friend
。在公共继承中:
y
的用户可以查看x
并查看public
。public
的{{1}}和protected
部分x
成为protected
y
的派生类可以看到它们。y
的用户看不到它们。y
中的public
和protected
部分x
成为private
中的y
:y
派生的贱民看不到他们。y
的用户看不到它们。This C++ FAQ提供有关私有和受保护继承的良好信息。
答案 1 :(得分:0)
X
)的“用户”可以访问从基类继承的成员(Y
);现在,用户可以是从这个派生类派生的类。 **protected interitance**
类似于在派生类中声明基类的public和protected成员。**public inheritance**
使派生类中的基类的公共成员成为公共成员;但是派生类中的受保护的基类成员仍然受到保护。 答案 2 :(得分:0)
我无法强调基类的私有成员无法被派生类访问的事实,除非该派生类被声明为基类中的朋友。