记住,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 函数的形式 替换.
>
谨记:
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 引用..
posted on 2009-09-23 19:20
米游 阅读(319)
评论(0) 编辑 收藏 引用 所属分类:
C/C++