随笔-38  评论-23  文章-0  trackbacks-0
  • 条款一 视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 引用..

posted on 2009-09-23 19:20 米游 阅读(290) 评论(0)  编辑 收藏 引用 所属分类: C/C++

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理