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

Effective C++ 读书笔记 条款一至三

2009-09-23 19:12 274 查看
条款一 视C++为一个语言联邦

记住,C++中的四种次语言..

1.C. c基础..

2.Object-Oriented C++ ,c++的主要,class ,类封装,继承,多态等.

3.Template C++ ..c++里头的泛型编程..模板编程.

4.STL. 标准模板库..如vector,queue,map等.

这个条款所叙述的..应当在次语言变换时候,高效编程守则也需要做出相应的改变策略..



例子:

对内置对象类型而言..使用 值传递 要比 引用传递 来的高效

对于自定义类而言, 常引用传递往往更好..(const class& )

STL 中而言.其是在C指针之上塑造,因此.值传递 也再次适用..



谨记: 对于C++高效编程原则应当视情况而定..取决使用C++中的那一部分

条款2 尽量使用const enum inline 替换 #define 宏

请记住:

1.对于单纯常量,最好以const对象或enums 替换掉 #define..

如: const double PI = 3.141592653

class Test{

static const double PI; //声明式

};

const double Test::PI = 3.141592653; //定义式,在实现文件.

2. 对于形似函数的宏..最好改用 inline 函数的形式 替换.

条款3 尽可能的使用 const

谨记:

1.将某些东西声明为const 可帮助编译器侦测错误用法. const 可被施加于任何作用域的对象,函数参数.函数返回类型.成员函数本体.



如, 在C++里常用的 const 引用传值 就如常 const 指针一样.不以前函数修改其值.这就很好的保护了.参数的值不能被修改.



如. 定义成const 成员函数,在该成员函数里,是不允许修改成员变量的.因此这样一个接口往往可以启动保护数据的作用.



const 引用传值时候,只能调用.const 成员函数...



const 返回值 往往会作为接口时候,使得返回值不允许被外部修改.因此也是非常有用.



STL 当中的iterator.. const vector<int>::Iterator 表示 int * const 指针常量.

vector<int>::const_Iterator 即 const int * 常量指针..



2. 编译器强制实施 bitwise constness. 但使用时候 应注意是概念上的常量.



mutable 将释放掉这种约束..即.这么定义. mutable int size;

其定义的变量允许在const 成员函数中予以修改..

3.当const 和 non-const 成员函数 具有等价实现时候,,令non-const 函数 调用const 函数 可避免重复.



为什么不const 调用 non-const ..原因在于.const 需要保证不允许修改成员变量. 而调用non-const 成员函数.则存在可能已经修改了成员变量.因此这是一种不正确..



例子可入下所示:



[const_cast<T&>](static_cast<const T&>(*this) .function()); const_cast 视情况而定..如需要返回值去掉const属性则就需要了. static_cast<> 则进行一次强制转换成const 引用..
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐