您的位置:首页 > 编程语言 > C语言/C++

《大规模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++程序设计, 读书笔记
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: