1. 本书宗旨
- 本书的目的是告诉你如何
有效的运用C++
,假设你已经是知道C++语言并且对于它已经有了一些使用经验。(Moota:起码写个C++版贪吃蛇
吧) - 忠告分为两种
- 一般性的设计
策略
- 带有具体细节的特定语言
特性
- 一般性的设计
- 这并不是一本范围广泛的C++参考书籍
- 这也不是一本C++入门书籍
- 本书强调那些常常被漠视的C++编程方向和观点
- 本书将语言范围限制在标准C++之上
- 本书不是走向完美C++软件的唯一真理之路
2. 术语
2.1 声明式
声明式:告诉编译器某个东西的名称和类型。
//对象声明式
extern int x;
//函数声明式
std::size_t NumDigits(int number);
//类声明式
class Widget;
//模板声明式
template <typename T>
class GraphNode;
注意作者在这里把看基本类型看作对象(Obejct)。
顺带一提,size_t 本质是 unsigned int,是一个 typedef
2.2 函数签名式
函数的声明揭示了其签名式。也就是参数和返回值
。
而C++对于签名的官方定义中并不包含函数的返回类型。
这意味着函数的重载不能根据返回值判断
。
void Fun()
{
}
int Fun()//error:has already been declared with return type 'void'.
{
return 0;
}
2.3 定义式
提供给编译器一些声明式所遗漏的细节,
对对象而言是编译器为此分配内存的地点。
对于函数而言是提供了代码本体。
对于类而言是列出了内在的成员。
2.4 初始化
是给对象赋初值的过程。
- explicit
关键字
可以阻止类型之间的隐式转换。
隐式转换可能带来意想不到的问题。
- copy构造和copy赋值
(copying 函数)
复制构造在新对象被定义时调用。
- 比较好的方式是传常引用
(const T&)
2.5 STL
Standard Template Library
2.6 Interface
C++没有,但是可以模拟其行为
2.7 Client
客户,代码服务的对象,可以是代码,也可以是使用它的人。
3. 命名习惯
- Left-Hand Side:lhs
左手端 - Right-Hand Side:rhs
右手端 - Ptr to Class:pc
指向类型的指针 - Ref to Class:rc
指向类型的引用
4. 关于线程
当C++受到全世界关注时,多线程的程序还不存在。
虽然现在他们存在了,本书的焦点不在这。但是我们不得不关于:线程安全性。我会及时指出。
5. TRI和Boost
比较好的代码库…