第二章 2.4
来源:互联网 发布:java同步异步调用 编辑:程序博客网 时间:2024/06/05 17:43
2.4 const限定符
1、const对象一旦创建后其值就不能再改变,所以const对象必须初始化。初始值可以是任意复杂的表达式。
2、const对象除了不能执行会改变对象内容的操作以外,其他可执行的操作与非const对象没有区别。
3、默认情况下,const对象被设定为仅在文件内有效,当多个文件中出现了同名的const变量时,其实等同于在不同文件中分别定义了独立的变量。如果需要让const对象像非常量那样,只在一个文件中定义,而在其它文件中声明并使用,实现在文件间的共享,解决的办法是:对于const对象不管是定义还是声明都添加extern关键字。(P54)
4、不允许让一个非常量引用指向一个常量对象。同理,要想存放常量对象的地址,只能使用指向常量的指针。
5、对常量的引用不能用于被用作修改它所绑定的对象,但并未限定引用的对象本身,也就是说,引用的对象可能是个非常量,可以通过其他途径改变它的值。同理,指向常量的指针也没有规定其所指的对象必须是一个常量。
7、事实上,初始化常量引用时允许用任意表达式作为初始值,只要该表达式的结果能转换成引用的类型即可。尤其,允许为一个常量引用绑定非常量的对象、字面值,甚至是个一般表达式。同理,允许令一个指向常量的指针指向一个非常量对象。(P55)
8、指针本身是个对象,因此允许把指针本身定义为常量,采用*const的形式书写。此时指针本身的值不能改变,即指针指向的对象不能改变,但指针指向的那个对象的值是可以改变的(除非指向的对象也是个常量)。
9、顶层const表示对象本身是个常量,而底层const表示对象指向的对象是常量。当执行对象的拷贝操作时,常量是底层const还是顶层const区别明显。需要遵循的原则是:不能改变常量的常量属性即可。(P58)
10、常量表达式(const expression)是指值不会改变并且在编译过程就能得到计算结果的表达式。可以用 constexpr关键字定义常量,与const不同的是,constexpr只能用常量表达式初始化,而const是可以用普通变量去初始化的。
11、函数体内定义的变量一般并非存放在固定地址中,因此constexpr指针不能指向这样的变量。相反,定义于所有函数体之外的对象其地址固定不变,能用来初始化constexpr指针。
12、在constexpr声明中如果定义了一个指针,限定符constexpr仅对指针有效,与指针所指的对象无关,即顶层const。
- 第二章 2.4
- 第二章 --- 第二节
- 【第二章 第二节】
- 第二章第二题
- 第二章第二题
- 第二章第二题
- 2.4 - 第二章:函数 - 总结
- 第二章:2.4 卷积性质
- 第二章 2.4优先队列
- 第二章
- 第二章
- 第二章
- 第二章
- 第二章
- 第二章
- 第二章
- 《第二章》
- 第二章
- 回溯法与分支限界法
- H5 拖放事件详解
- 破解IntelliJ IDEA 2017.1到2099年
- 开发学习路线
- win8.1修改用户名
- 第二章 2.4
- 【51Nod】1004 n^n的末位数字
- windows管理命令
- Hbase性能问题以及解决方案
- Apatch Tomcat8.0 的配置遇到问题全面总结
- 欢迎使用CSDN-markdown编辑器
- nmon使用方法
- 121. Best Time to Buy and Sell Stock
- linux $ PATH=~/bin:$PATH这个命令是什么意思?