首 页 | 新 闻 | 技术中心 | 第二书店 | 《程序员》 | 《开发高手》 | 社 区 | 黄 页 | 人 才
移 动专 题SUNIBM微 软微 创精 华Donews人 邮
我的技术中心 
我的分类 我的文档
全部文章 发表文章
专栏管理 使用说明



 RSS 订阅 
最新文档列表
Windows/.NET
.NET  (rss)    
Visual C++  (rss)    
Delphi  (rss)    
Visual Basic  (rss)    
ASP  (rss)    
JavaScript  (rss)    
Java/Linux
Java  (rss)    
Perl  (rss)    
综合
其他开发语言  (rss)    
文件格式  (rss)    
企业开发
游戏开发  (rss)    
网站制作技术  (rss)    
数据库
数据库开发  (rss)    
软件工程
其他  (rss)    

积极原创作者 
iiprogram (92)
Purpleendurer (137)
nizhigang2000 (13)
btbtd (85)
wfdmd (27)
yjz0065 (121)
lzmtw (31)
feng_sundy (165)
whoopee (60)
WapWeb (12)
CSDN - 文档中心 - 其他开发语言 阅读:303   评论: 0    参与评论
标题   翻译:Effective C++, 3rd Edition, Chapter 6. Inheritance(继承)和 Object-Oriented Design(面向对象设计)     选择自 fatalerror99 的 Blog
关键字   翻译:Effective C++, 3rd Edition, Chapter 6. Inheritance(继承)和 Object-Oriented Design(面向对象设计)
出处  

Chapter 6. Inheritance(继承)和 Object-Oriented Design(面向对象设计)

Object-oriented programming (OOP) 已经流行了差不多 20 年,所以,你很可能对 inheritance(继承),derivation(派生)和 virtual functions(虚拟函数)等概念有一些经验。即使你一直只用 C 来编程,你也不会全然躲过 OOP 的喧嚣。

尽管如此,C++ 的 OOP 和你习惯的东西可能有一点不同。inheritance 可以有 single 或 multiple 之分,而每一个 inheritance 关系可以是 public,protected 或 private。每一个关系也可以是 virtual 或 non-virtual。然后,还有 member function 的选项。Virtual?Non-virtual?Pure virtual?以及与其它语言特性的交互作用。default parameter values(缺省参数值)和 virtual function 如何互相影响?inheritance 如何影响 C++ 的 name lookup rules(名字查找规则)?以及有哪些关于设计的选择?如果一个 class 的行为需要变化,virtual function 是最好的方法吗?

本章将依次给出全部解答。此外,我将解释 C++ 中不同特性的真正意味——也就是说当你使用一个特定的结构,你实际表达了什么。例如,public inheritance 意味着 "is-a",而如果你试图让它意味着其它什么东西,你就会碰到麻烦。同样,一个 virtual function 意味着“interface must be inherited(接口必须被继承)”,而一个 non-virtual function 则意味着“both interface and implementation must be inherited(接口和实现都必须被继承)”。无视这些含义之间的区别就会造成 C++ 编程中相当多的烦恼。

如果你理解了 C++ 各种特性的含义,你就会发现你对 OOP 的观点发生了变化。它不再是区分不同的语言特性的练习,而是成为决定关于你的软件系统你需要描述什么的内容。而且一旦你知道要描述什么,把它转换成 C++ 就不那么费力了。

本章包含以下内容:

  • Item 32: Make sure public inheritance models "is-a"
  • Item 33: Avoid hiding inherited names
  • Item 34: Differentiate between inheritance of interface and inheritance of implementation
  • Item 35: Consider alternatives to virtual functions
  • Item 36: Never redefine an inherited non-virtual function
  • Item 37: Never redefine a function's inherited default parameter value
  • Item 38: Model "has-a" or "is-implemented-in-terms-of" through composition
  • Item 39: Use private inheritance judiciously
  • Item 40: Use multiple inheritance judiciously

相关文章
对该文的评论