const限定符限定变量的类型是一个常量,对象一旦创建后其值就无法改变,所以const对象必须初始化。

初始化  

const int i = get_size();     //运行时初始化
const int j = 42;                //编译时初始化int k = 40;
const int ck = k;                //k的值 被拷贝给了ck

const对象的作用域 

默认情况下,const对象仅在文件内有效.

如果要在多个文件中共享const对象,必须在变量的定义之前添加extern关键字。 

//file_1.cc定义并初始化了一个常量,该常量能被其他文件访问
extern const int bufsize = fcn();  //这里必须加上extern,别的文件才可以用//file_1.c 头文件
extern const int bufsize; //与file_1.cc中定义的bufsize是同一个

const的引用  

因为引用所代表的就是另外一个对象的,别名而已,所以考虑引用所对应的对象是否被改变即可!!const对象也不是不能改变,下面会有提到!

1 const int ci = 1024;
2 const int &r1 = ci;    // 正确:引用及其对应的对象都是常量
3 r1 = 42;                   // 错误:r1 是对常量的引用
4 int &r2 = ci;             // 错误:试图让一个非常量引用指向一个常量对象
5                                //试想,c1的值不可改变,但r2的值可改变,那么改变r2就是改变c1,显然不对
6 int i = 125;
7 const int & r3 = i;    //允许将const int & 绑定到一个普通的int对象上    

View Code

初始化和对const的引用

1 int i = 42;
2 const int &r1 = i;     //允许将const int & 绑定到一个普通int对象上
3 const int &r2 = 42;  //正确:r1是一个常量引用
4 const int &r3 = r1 * 2;    //正确:r3是一个常量引用
5 int &r4 = r1 * 2;       //错误:r4是一个普通的非常量引用    

View Code

对于两种情况,见下面,编译器会报错!

int i = 42;
const int & r1 = i; //正确,但改变i的值,r1也会跟着改变
const int ci = 1024;

int &i1 = i;i1 = 54;//正确r1 = 54;//错误int &r2 = ci*2; // 错误 VS 2015中提示:非常量引用的初始值必须为左值int &r3 = r1; //错误 VS2015 提示:"int &" 类型的引用绑定到 "const int" 类型的初始值设定项时,限定符被丢弃

转载于:https://www.cnblogs.com/zhehan54/p/5223790.html

const限定符用法汇总相关推荐

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

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

  2. 指针和Const限定符

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

  3. C++primer :const限定符

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

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

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

  5. C++的const限定符

    const限定符总是让人很头疼,下面讲解一下几个比较容易混淆的概念: 对常量的引用(常量引用): 一般情况下,引用的类型要与其所引用的对象的类型一致,其中的例外情况就是,当初始化常量引用时,允许用任意 ...

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

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

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

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

  8. c++ const限定符

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

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

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

最新文章

  1. 成功解决TypeError: take() got an unexpected keyword argument ‘fill_value‘
  2. [trouble shoot]atol和atoll
  3. python搜索文件内容_python实现搜索文本文件内容
  4. 这9个人气超高的公众号,你还没关注吗?
  5. 子网规划与组网实验_交换机四种组网方式,你都清楚吗
  6. c# ComboBox禁用鼠标滚轮
  7. Linux查ip出来的pp0,linux下使用shell查看apache IP访问量
  8. 人工神经网络理论及应用第三章课后题答案
  9. 串口程序设计——struct termios结构体
  10. 平安科技java机试题_2017年华为优招机试题_平安果_编程题
  11. 司空见惯 - 洪荒之力
  12. Windows Defender无法关闭的红叉
  13. 新浪微博回调地址redirect_url(授权回调页)的设置格式
  14. 解决MAC系统升级后虚拟机黑屏问题
  15. 小鱼儿的菜鸟笔记三 原来Excel图表可以这么做——花样制作Excel条形图/柱状图/环形图/折线图
  16. 使用CSS3设置条纹背景
  17. MySQL Key的含义
  18. jasperprint 设置横向打印
  19. 贵州将大力推进城市更新“四改”工作
  20. python(C)作业6 P110 2,4,12

热门文章

  1. 千寻位置 开发demo_CICV2019:博世相对高精度定位与千寻绝对高精度定位
  2. 在有空字符串的有序字符串数组中查找(找给定字符串)
  3. [not] exists 和 in
  4. tf代码之tf.nn.conv2d_transpose
  5. 适合于图像处理方向的SCI期刊杂志列表【转】
  6. opencv 显示程序运行时间
  7. 傅里叶变换原理讲解及python手动实现
  8. 差分滤波器的实现及作用于图像提取图像的特征
  9. c#使用SHA256算法实现对文件的加密和解密
  10. int n引发的中断应用——编写中断7CH的中断例程