现在的位置: 首页 > 综合 > 正文

[翻译] Effective C++, 3rd Edition, Chapter 6. Inheritance(继承)和 Object-Oriented Design(面向对象设计)

2013年01月11日 ⁄ 综合 ⁄ 共 1527字 ⁄ 字号 评论关闭

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

作者:Scott Meyers

译者:fatalerror99 (iTePub's Nirvana)

发布:http://blog.csdn.net/fatalerror99/

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++ 就不那么费力了。

本章包含以下内容,点击打开:

 

抱歉!评论已关闭.