鱼C论坛

 找回密码
 立即注册
查看: 1893|回复: 1

[C++个人笔记] 类继承

[复制链接]
发表于 2013-3-19 11:21:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
公有继承的派生类特征% H$ M$ n7 }0 H0 ?0 F
  • 派生类对象存储了基类的数据成员(派生类继承了基类的实现)。
  • 派生类对象可以使用基类的方法(派生类继承了基类的接口)。
    # U; l6 w0 `" d* k+ o' {

# }% x. \% K9 Q0 O) j( S需要在继承特性中添加:
1 @2 ^( C2 F1 W1 z$ C& M& j+ U! _* H6 B
  • 派生类需要自己的构造函数。
  • 派生类可以根据需要添加额外的数据成员和成员函数。
    # k0 G4 ]* d/ B; q9 ?

0 C# G8 R8 T0 X/ P派生类构造函数的要点:9 J- [& h! p, L( |& t8 f- Y
  • 基类对象首先被创建。
  • 派生类构造函数应通过成员初始化列表将基类信息传递给基类构造函数。
  • 派生类构造函数应初始化派生类新增的数据成员。
    % B# f3 E5 i' A

/ ~8 q$ q4 @3 y7 p0 AC++的三种继承关系
* Y4 k1 Y8 n- V$ |0 [7 ^* p( @# |
  • 公有继承
  • 保护继承
  • 私有继承8 Y% X) u/ ]4 H! w
公有继承是最常用的方式,他建立一种is-a关系。) K) x# {% S: r3 i

* b. y4 o! {) }- n  }% u与C++继承的底层模型不相符的例子
, W0 u) X5 H. _* G/ C- A; S
  • has-a关系:午餐可能包括水果,但午餐并不是水果。正确做法是午餐有水果。将水果对象作为午餐类的数据成员。
  • is-like-a关系:律师像鲨鱼,但律师不是鲨鱼。可以设计一个包含共有特征的类,然后以is-a或has-a关系,使用这个类来定义相关的类。
  • is-implemented-as-a关系:可以使用数组来实现堆栈,但从数组类派生出堆栈类是不合适的,因为堆栈不是数组。正确方法是:让堆栈类包含一个私有数组对象成员,来隐藏数组实现。
  • uses-a关系:计算机可以使用打印机,但从计算机类派生出打印机类是没有意义的。( |4 ^* [. l, H' M8 s

评分

参与人数 1鱼币 +1 收起 理由
(@_@) + 1 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-19 11:57:45 | 显示全部楼层
{:7_172:}好东西
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-2-22 02:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表