《大规模C++程序设计》读书笔记2
2008-01-07 22:39
309 查看
定义1:一个声明将一个名称引入一个程序;一个定义提供了一个实体(例如,类型、实例、函数)在一个程序中的唯一描述。
在给定作用域中,声明可以重复,定义只能有一个。例外:类的成员函数和静态数据成员,虽然不是定义,但在一个类声明中也不可以重复。
Class NoGood {
static int i; // declaration
static int i; // illegal in C++
public:
int f(); // declaration
int f(); // illegal in C++
}
定义2:如果一个名称对于它的编译单元来说是局部的,并且在连接时不可能与其他编译单元中的同样的名称相冲突,那么这个名称有内部连接。
static变量、const变量、enum类型、类定义、inline函数定义、typedef声明
定义3:在一个多文件程序中,如果一个名称在连接时可以和其他编译单元交互,那么这个名称就有外部连接。
非内联成员函数、静态成员变量、非内联函数、非静态自由函数
在头文件中放置带有内部连接的定义是合法的,但并不是一种良好的做法:1. 在每一个包含该头文件的编译单元中消耗数据空间,影响程序的大小;2. 破坏高速缓存机制,影响程序运行性能。例外:在头文件中放置一个用户自定义对象的静态实例,用来确保一个特殊的全局工具(例如iostream)在使用前已被初始化。
好的接口比好的实现更重要,接口对客户程序产生直接的影响,并且具有全局影响力,实现只是影响作者和代码维护者。
Technorati : C++, 大规模C++程序设计, 读书笔记
在给定作用域中,声明可以重复,定义只能有一个。例外:类的成员函数和静态数据成员,虽然不是定义,但在一个类声明中也不可以重复。
Class NoGood {
static int i; // declaration
static int i; // illegal in C++
public:
int f(); // declaration
int f(); // illegal in C++
}
定义2:如果一个名称对于它的编译单元来说是局部的,并且在连接时不可能与其他编译单元中的同样的名称相冲突,那么这个名称有内部连接。
static变量、const变量、enum类型、类定义、inline函数定义、typedef声明
定义3:在一个多文件程序中,如果一个名称在连接时可以和其他编译单元交互,那么这个名称就有外部连接。
非内联成员函数、静态成员变量、非内联函数、非静态自由函数
在头文件中放置带有内部连接的定义是合法的,但并不是一种良好的做法:1. 在每一个包含该头文件的编译单元中消耗数据空间,影响程序的大小;2. 破坏高速缓存机制,影响程序运行性能。例外:在头文件中放置一个用户自定义对象的静态实例,用来确保一个特殊的全局工具(例如iostream)在使用前已被初始化。
好的接口比好的实现更重要,接口对客户程序产生直接的影响,并且具有全局影响力,实现只是影响作者和代码维护者。
Technorati : C++, 大规模C++程序设计, 读书笔记
相关文章推荐
- 《大规模C++程序设计》读书笔记5
- 《大规模C++程序设计》读书笔记10
- 《大规模C++程序设计》读书笔记12
- 《大规模C++程序设计》读书笔记3
- 《大规模C++程序设计》读书笔记6
- 《大规模C++程序设计》读书笔记13
- 《大规模C++程序设计》读书笔记16
- 《大规模C++程序设计》读书笔记30
- 《大规模C++程序设计》读书笔记32
- 《大规模C++程序设计》读书笔记4
- 《大规模C++程序设计》读书笔记7
- 《大规模C++程序设计》读书笔记18
- 《大规模C++程序设计》读书笔记19
- 《大规模C++程序设计》读书笔记11
- 《大规模C++程序设计》读书笔记26
- 《大规模C++程序设计》读书笔记8
- 《大规模C++程序设计》读书笔记14
- 《大规模C++程序设计》读书笔记20
- 《大规模C++程序设计》读书笔记22
- 《大规模C++程序设计》读书笔记27