作者 : Scott Meyers
c++提供了四种不同(但相辅相成)的程式设计思维模式:procedural-based,object-based,object-oriented,generic paradigm。
动力是: 一旦学成,妙用无穷。
广博如四库全书者:The C++Programming Language、C++ Primer
深奥如重山复水者:The Annotated C++ Reference Manual, Inside the C++ Object Model
细说历史者:The Design and Evolution of C++, Ruminations on C++
独沽一味者:Polymorphism in C++, Genericity in C++
独树一帜者:Design Patterns,Large Scale C++ Software Design, C++ FAQs
程式库大全:The C++ Standard Library
另辟蹊径者:Generic Programming and the STL
工程经验之累积:Effective C++, More Effective C++, Exceptional C++
涵盖 C 函式库
不必牺牲移植性
不必从头撰写常用演算法和资料结构
C++ 编译器的数量不断增加
C++ 开发工具和开发环境愈来愈丰富,威力愈来愈强大,稳健强固(robust)的程度愈来愈高。
本书回答的问题
大部份 C++ 教科书中对语言性质的大量描述,只能算是本书的一个背景资讯而已。
你应该在阅读本书之前便熟悉 C++。我假设你已了解类别
(classes)、保护层级(protection levels)、虚拟函式、非虚拟函式,我也假设你已通晓
templates 和 exceptions 背後的概念。
ISO/ANSI 标准委员会於 1997 年 11 月完成的 C++国际标准最後草案(Final Draft International Standard)。
inheritance(继承),意思是 public inheritance
继承箭头画法:从 derived classes 画往 base classes,
抽象类别:abstract classes,
具象类别:concrete classes
Inheritance(继承机制)会引发「pointers(或 references)拥有两个不同类型」的
议题,两个型别分别是静态类型(static type)和动态类型(dynamic type)。Pointer 或
reference 的「静态类型」是指其声明时的类型,「动态类型」则由它们实际所指的物件来
决定。
一种命名方式为 pointer 和 reference 命名。
两个参数名称:
其他缩写:
ctor : “constructor”,
dtor : “destructor”
RTTI : C++ 对 runtime type identification 的支援
为了强调在 C++ 中 memory leaks 往往也会遗失其他资源,我在书中
常以 resource leaks 一词取代 memory leaks。
对象用完后一直未被释放时,对象所占的内存,以及构造对象时分配的其他资源
(如 file descriptors, semaphores, window handles,database locks),一起被遗失。
inline 函式:
client:指你所写的程式码的客户。
如何让 clients 更轻松,通常这会导至你的行事更困难,因为好的程序「以客为尊」。
指针与引用都是让你间接引用其他对象。
在什么时候使用指针,什么时候使用引用?
因为引用肯定会指向一个对象。
指针应该总是被测试,防止其为空。
指针可以被重新赋值以指向另一个不同的对象。
引用总是指向在初始化时被指定的对象,以后不能改变。
应该使用指针的情况:
使用引用的情况:
除此之外的其他情况下,则应使用指针。