博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ const限定符
阅读量:5249 次
发布时间:2019-06-14

本文共 852 字,大约阅读时间需要 2 分钟。

  • 基本特性
  1. const对象一旦创建后其值就不能被修改,故而const对象必须进行初始化
  2. 可以用一个非const对象初始化一个const对象,也可以用一个const对象赋值给一个非const对象
  • 默认状态下,const对象仅在文件内有效
  1. 当多个文件内出现了同名的const变量时,等同于在不同文件中定义了独立的变量
  2. 要在多个文件之间共享const对象,在变量的定义之前加上extern关键字
  • &类型与const
    1、&(引用)类型与*(指针)类型不同,
引用类型的声明、定义和初始化是一起的,初始化之后将不能再引用其他的变量
    
    
    
而指针类型的声明、定义、初始化以及之后的赋值都是没有限制的。
  1. int a =1;
  2. int b =2;
  3. int&c = a;
  4. int*p;
  5. p =&a;
    2、与const的搭配
  1. int a =1;
  2. int b =2;
  3. /**< 因为引用在被初始化之后就不能在引用其它变量,所以没有int & const c = a这种写法 */
  4. constint&c = a;
  5. /**
  6. * 不能给c赋值,对a无要求(a可以是const或者非const类型,a也可以重新赋值)
  7. * 不能将c赋值给非const类型
  8. */
  9. constint*p1 =&a;//等同于int const *p1 = &a;
  10. /**
  11. * 底层const
  12. * 不能通过p1修改a的值,对a无要求
  13. * 不能将p1赋值给非const类型
  14. * p1可以指向其他变量
  15. */
  16. int*const p2 =&a;
  17. /**
  18. * 顶层const
  19. * 可以通过p2修改a的值
  20. * p2不能指向其他变量
  21. */
  22. const int * const p3 = &a;
如果const位于
*
的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;
如果const位于
*
的右侧,const就是修饰指针本身,即指针本身是常量.

转载于:https://www.cnblogs.com/fengkang1008/p/4652244.html

你可能感兴趣的文章
web_day4_css_宽度
查看>>
用sql删除数据库重复的数据的方法
查看>>
学习笔记21—PS换图片背景
查看>>
electron入门心得
查看>>
格而知之2:UIView的autoresizingMask属性探究
查看>>
Spring3.0 AOP 具体解释
查看>>
我的Hook学习笔记
查看>>
EasyUI DataGrid 中字段 formatter 格式化不起作用
查看>>
海量数据存储
查看>>
js中的try/catch
查看>>
[导入]玫瑰丝巾!
查看>>
自动从网站上面下载文件 .NET把网站图片保存到本地
查看>>
【识记】 域名备案
查看>>
STL uva 11991
查看>>
MY SQL的下载和安装
查看>>
自定义OffMeshLink跳跃曲线
查看>>
寄Android开发Gradle你需要知道的知识
查看>>
简述spring中常有的几种advice?
查看>>
学习Redux之分析Redux核心代码分析
查看>>
ABAP 创建和调用WebService
查看>>