const限定符总是让人很头疼,下面讲解一下几个比较容易混淆的概念:

  1. 对常量的引用(常量引用):
    一般情况下,引用的类型要与其所引用的对象的类型一致,其中的例外情况就是,当初始化常量引用时,允许用任意表达式作为初始值,只要改表达式能转换成引用的类型即可。
const int i = 1;
const int &ri = i;
int i = 42;
const int &r1 = i;
const int &r2 = 42;
  1. 指向常量的指针
    和引用类似,一般情况下,指针的类型应该与其指向的对象的类型一致,但是允许一个指向常量的指针指向一个非常量对象。
const int i = 4;
const int *cptr = &i;
int a = 1;
cptr = &a;
  1. 常量指针
    由于指针本身就是一个对象,因此可以定义一个指针为常量指针,必须被初始化。当常量指针指向一个对象时,那么这个指针永远只能指向这个对象,但是被指向的对象的值能否改变,取决于被指向的对象本身是否是一个常量。
int i = 1;
int *const cp = &i;//cp永远指向i,
i = 2;//由于i是非常量,其值可以改变
const int c = 2;
const int *const p = &c;//p是一个指向常量的常量指针
c = 1;//错误,c为常量,其值不能被改变
p = &i;//错误,p是一个常量的指针,其指向不能改变
  1. 顶层const与底层const
    顶层const表示指针本身就是一个常量,而底层const表示指针所指的对象是一个常量。
int i = 0;
int *const pi = &i;//pi的值不能被改变,pi为顶层const
const int ci = 42;//ci是一个int类型的常量,值不能被改变,为顶层const
const int *p2 = &ci;//p2是一个指向常量的指针,p2的值可以改变,所以p2为底层const
const int *const p3 = p2;//靠右的const是顶层const,靠左的const是底层const
const int &r = ci;//用于声明引用的const都是底层const

C++的const限定符相关推荐

  1. 指针和Const限定符

    指针和Const限定符 1.指向const对象的指针 如果指针指向的是const对象,则不允许使用指针来改变其所指的const值.C++要求指向const对象的指针具有const特性. const d ...

  2. C++primer :const限定符

    1.问题引入 <span style="font-size:18px;"><span style="font-size:18px;">f ...

  3. php+条件限定符,const 限定符

    const 限定符 const 对象一旦创建后不可改变,所以const必须初始化. const int i=get_size(); //运行时初始化 const int j=43; const int ...

  4. 指针、引用以及const限定符、constexpr限定符

    文章目录 复合类型 引用 概念与使用 引用的定义 注意 指针 概念 声明方式 取地址符 指针值 空指针 利用指针访问对象 赋值和指针 void* 指针 指向指针的指针 指向指针的引用 初始化所有指针 ...

  5. C++primer第二章2.4节对于const限定符相关内容进行详解

    const限定符 const对象一旦创建后其数值就不会被再次改变,因此const对象必须初始化. const对象只在文件中有效 在不同的文件中使用不同的const来定义不同的常量,那么每个文件定义的变 ...

  6. C++ const限定符和auto类型说明符

    const限定符 # 1.限定常量 有时我们希望定义这样的变量:它的值不能被改变.为了满足这一要求,我们使用const对变量的类型加以限定: const int bufSize = 512; 这样就把 ...

  7. c++ const限定符

    const限定符 const对像一旦创建,其值就不能发生改变.const对象必须初始化 const int i = get_size();//正确,运行时初始化. const int j = 1;// ...

  8. const限定符用法汇总

    const限定符限定变量的类型是一个常量,对象一旦创建后其值就无法改变,所以const对象必须初始化. 初始化 const int i = get_size(); //运行时初始化 const int ...

  9. Const限定符与C++11Constexpr的区别

    Const限定符: 属于标准C里的限定符,负责将变量.对象转换成一个字面值常量,值得注意的是,Const限定符只能在编译期间被确定为字面值常量,但是在运行阶段还是会为其分配内存而不是存在于代码段中,也 ...

最新文章

  1. 2021年春季学期-信号与系统-第三次作业参考答案-第三道题
  2. 给程序员的VIM速查卡
  3. 单片机开发设计之十层功力
  4. tableau for循环_Tableau for Data Science and Data Visualization-速成课程
  5. STM32那点事(2)_时钟树(上)
  6. android 15 activity跳转
  7. SQL 2008完全卸载
  8. 怎么样从零基础开始学习Java
  9. linux 设置色彩深度,wayland显示服务器,怎么把色彩深度设置成24位
  10. A + B Problem Too
  11. 设计模式(一)--编程界的九阳神功
  12. 爬虫采集数据遇到验证码怎么解决?
  13. C# 控制TSC打印机功能
  14. JavaScript基础知识梳理
  15. 大学毕业后转行软件测试我后悔了
  16. 前端网站性能优化建议
  17. Python实现拓扑排序并绘图
  18. 字魂字体包全网站VIPps古风毛笔书法cdr广告海报设计素材字库下载
  19. 仿支付宝首页下拉刷新
  20. Cocos2d-x制作跳棋第一步: 素材的准备

热门文章

  1. java 数字信号_数字信号处理理论及C++和Java实现 数字信号处理理论算法与实现...
  2. Air Data System
  3. gentoo 安装时的网络配置
  4. 写在S3C2440A平台+winCE5.0+NAND +HIVE注册表的实现
  5. html5 css登录注册实现,html5+css3实现一款注册表单实例
  6. ai字体行间距怎么调整_字体基础知识(一)
  7. 【转】01.Dicom 学习笔记-DICOM C-Store 消息服务
  8. 第十节:利用async和await简化异步编程模式的几种写法
  9. 第六节:反射(几种写法、好处和弊端、利用反射实现IOC)
  10. .net开源框架开源类库(整理)