关于 C++ 中的类派生的问题?
Posted
技术标签:
【中文标题】关于 C++ 中的类派生的问题?【英文标题】:question about class derivation in c++? 【发布时间】:2010-05-29 01:59:55 【问题描述】:我想知道一些关于 C++ 中的类派生的事情 所以我有超类 x 和继承的类 y 我这样做了
class x
public:a;
private:b;
protected:c;
class y:public x
public:d;
在这种情况下,您如何访问 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;
同样的问题?
对不起,我觉得我写的太多了 再见
【问题讨论】:
如果你没有,我建议你买一本The Definitive C++ Book Guide and List推荐的初学者书籍 【参考方案1】:在所有形式的继承中:
y
可以查看其基类 (x
) 并查看 public
和 protected
。
y
的派生类可以看到其public
和protected
成员。
y
的用户可以看到其public
成员。
没有人可以看到其他人的 private
s,除非他们是 friend
s。
在公共继承中:
y
的用户可以查看x
并查看public
。
在受保护的继承中:
public
和 protected
的一部分 x
在 y
中变为 protected
y
的派生类可以看到它们。
y
的用户看不到他们。
在私有继承中:
public
和 protected
的一部分 x
在 y
中变为 private
:
y
的派生 lasses 看不到它们。
y
的用户看不到他们。
私有继承本质上与组合(私有数据成员)相同。
This C++ FAQ 有很好的关于私有和受保护继承的信息。
【讨论】:
在C++的土地上,朋友们可以看到你的隐私。永不说永不。 ;-) 不错的答案。彻底、完整、简洁。【参考方案2】: 派生类只能访问基类的公共和受保护成员。它不能访问基类的私有成员。 private/public/protected 继承影响从基类 (X
) 继承的成员如何被派生类 (Y
) 的“用户”访问;现在,用户可以是从这个派生类派生的类。
私有继承类似于在派生类中将基类的公共和受保护成员声明为私有。
**protected interitance**
类似于将基类的公共成员和受保护成员声明为派生类中的受保护成员。
**public inheritance**
使基类的公共成员在派生类中公开;但是基类的受保护成员在派生类中仍然受到保护。
【讨论】:
【参考方案3】: 派生类不能访问基类的私有成员,除非派生类是基类的友元。 继承权限: 公共 - 基类的所有非私有成员保留其权限(基类:公共,派生:公共;基类:受保护,派生:受保护) 受保护 - 基类的所有公共成员在派生类中都受到保护;基类中的受保护成员仍受保护(基类:public,派生:受保护;基类:受保护,派生:受保护) 私有 - 基类的所有非私有成员在派生类中变为私有(基类:公共,派生:私有;基类:受保护,派生:私有)我怎么强调都不过分,即基类的私有成员不能被派生类访问,除非派生类被声明为基类中的友元。
【讨论】:
以上是关于关于 C++ 中的类派生的问题?的主要内容,如果未能解决你的问题,请参考以下文章
无法将派生类 push_back() 推入 C++ 中的 STL 列表