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


    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版本可以避免代码重复。(这个其实函数重载吧!!)

  • 相关阅读:
    java微信扫码支付(模式二)
    Python学习08
    学习java第12天
    学习java第11天
    学习java第十天
    学习Java第九天
    学习Java第八天
    学习Java第六天
    学习Java第六天
    学习Java第五天
  • 原文地址:https://www.cnblogs.com/chip/p/4764639.html
Copyright © 2020-2023  润新知