从零单排c++ primer(2)

(1)const对象一旦创建后其值就不能在改变,所以const对象必须初始化,初始化的值可以是表达式。
(2)在默认状态下,const对象仅在文件内有效,当多个文件中出现同名的const变量时,其实等同于在不同的文件中分别定义了独立的变量。
(3)在一个文件中定义const,在多文件中声明并使用它的解决办法是:对于const变量不管是声明还是定义都添加extern关键字,这样只需要定义一次就可以了。
                     //file_1.cc
                      extern const int bufsize = fcn();
                     //file_1.h
                      extern const int bufsize;
(4)可以把引用绑定到const对象上,就像绑定到其他对象上一样,我们称之为对常量的引用。
(5)有的是后常量引用可以绑定一些非常量的对象、字面值,甚至是表达式。
                      int i = 42;
                      const int &r1 = i;
                      const int &r2 = 42;
                      const int &r3 = r1 * 2;、
(6) 对const的引用可能引用一个并非const的对象
                      int i = 42;
                      int &r1 = i;
                      const int &r2 = i;
                      r1 = 0;
                      r2 = 0;    //错误,很多游戏中的输出限定,是不是就是用的这种方法?嘿嘿。
(7) 指向常量的指针不能用于改变其所指向的对象的值,想要存放常量对象的地址,只能使用指向常量的指针。
(8)所谓指向常量的指针或引用,不过是指针或引用“自以为是”罢了,它们自己觉得自己指向了常量,所以自觉地不去改变所指向的对象的值,但可以通过其他途径去修改。 
(9)指向常量的指针和常量指针是不同的
                      const double *cptr = π   //指向常量的指针
                      double *const cptr = π   //常量指针
(10) 指针本身是不是常量以及指针所指的是不是一个常量是两个独立的问题,用名词顶层const表示指针本身是一个常量,而用底层const表示指针所指的是一个常量。

你可能感兴趣的:(C++,学习,语言)