码迷,mamicode.com
首页 > 其他好文 > 详细

条款3:尽可能使用const(use const whenever possible)

时间:2015-08-27 22:52:29      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:

1.只要这(某值保持不变)是事实,就应该确实说出来,这样可以获得编译器的协助,确保这条约束不被违反。

2.keyword const 有很多种用法,但都简单易用。

     2.1classes 外部修饰global/namespace作用域中的常量。

     2.2修饰文件、函数、区块作用域中被声明的static 对象。

     2.3修饰classes内部的static和non-static 成员变量。

     2.4对于指针,可以指出ptr自身、ptr所指物或者两者都(或都不)是const。

    这里不清楚static跟 const关系???一般不是static 跟dynamic有对比关系吗?

   eg:

       char greeting[] = "hello";

       char* p = greeting ; //non-const pointer,non-const data

       const char * p = greeting ; // non-const pointer,const data

       char* const p = greeeting ; //const pointer , non-const data

        const char * const p = greeting;  // const pointer , const data

        char const * const p  = greeting ; // const pointer , const data 

        void f1(const widget * pr);

        void f2(widget const * pr);//都是被指物为const

    通过例子,可以区分何时表示被指物和指针本身是常量。

 3.STL迭代器:

    这个不是太懂,之前对STL了解比较少???

 4.函数声明时应用:

    const 可以与 函数返回值、各参数、函数自身产生关联。

     4.1const 函数返回值,降低低级错误的意外,而且不影响安全性和高效性。

        a*b = c;//试图改变*运算符的结果,再强行赋值为c.

        if(a*b=c);//把==写成=

     4.2const 成员函数

         确认该成员函数可作用于const对象。

           4.2.1 可以迅速了解那些成员函数可以改动对象内容。

           4.2.2 使函数操作const对象成为可能。

                两个成员函数如果只是常量性(constness)不同,可以被重载的。《====文中大量篇幅阐述这个特性。

                一个类中同时存在const和constness同名函数。那么const object call const member function .constness object call constness member function.

             4.2.3 bitwise const(physical constness) 和 logic constness 

                  这里最后引出了解决方法: mutable(可变的) 。这个迅速扫一遍,看懂了,觉得没啥。不过又忘掉了???

       5.casting(转型)

                这个不是太熟悉,static-cast / const-cast /dynamic-cast ...

          const成员函数承若绝对不改变其对象的逻辑状态(logic state),noo-const 成员函数没有此承若。

          NOTE:

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

              2.编译器强制实施bitwise constness,但你编写的程序时应该使用“概念上的常量”(conceptual constness)(这点已经忘了,虽然看懂了!!!)

             3.当const 和 non-const 成员函数有着等价的实现时,令non-const版本调用const版本可以避免代码重复。(这个其实函数重载吧!!)

条款3:尽可能使用const(use const whenever possible)

标签:

原文地址:http://www.cnblogs.com/chip/p/4764639.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!