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

Effective C++(一)让自己习惯C++

2013-05-25 20:24 645 查看
条款1:视C++为一个语言联邦。

(1)C++是四个次语言组成的联邦,每个语言都有自己的规约。当从一个次语言移往到另一个次次语言,守则可能要改变。

(2)C++共有四个次语言组成:

*C。

*Object-oriented C++。

*Template C++。

*STL。

条款2:尽量以const,enum,inline替换#define。

(1)对于单纯常量,最好以const对象或enum代替#define。

(2)对于形似函数的宏,最好改用inline函数替换#define。

条款3:尽可能多使用使用const。

(1)const与指针:

*const type *ptr或type const *ptr:被指对象是常量。

*type *const ptr:const指针。

*const type *ptr:指针和被指对象都是const。

条款4:确定对象被使用前已被初始化。

(1)对于内置类型必须手工初始化,因为C++不保证初始化它们。

*内置类型变量是否初始化取决于变量定义的位置:在函数体外定义的变量都初始化为0;在函数体内定义的内置类型变量不进行自动初始化。

*类中的内置类型变量成员是否初始化取决于类对象的作用域:局部作用域的对象的内置类型成员不自动进行初始化;全局作用域的对象的内置类型成员初始化为0.

(2)构造函数最好使用成员初始化列表,而不要在构造函数体内使用赋值操作。

*对于类类型使用初始化列表比函数体内复制操作效率高;内置类型一样。

*从概念上说,可以认为构造函数分为两个阶段运行:1)初始化阶段;2)普通计算阶段,计算阶段由构造函数函数体中的所有语句组成。不管成员是否在构造函数的初始化列表中,类类型的数据成员总是在初始化阶段初始化,初始化发生在计算阶段开始之前。

(3)C++有着固定的“成员初始化次序”:base class早于driver classes被初始化,而class的成员变量总是以其声明次序被初始化。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: