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对象也不是不能改变,下面会有提到!

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

初始化和对const的引用

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

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

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

const限定符用法汇总的更多相关文章

  1. C++ const 限定符

    C++ const 限定符 作用:把一个对象转换成一个常量 用法:const type name = value; 性质:1. 定义时必须初始化,定义后不能被修改.2. 类中的const成员变量必须通 ...

  2. 变量和基本类型——复合类型,const限定符,处理类型

    一.复合类型 复合类型是指基于其他类型定义的类型.C++语言有几种复合类型,包括引用和指针. 1.引用 引用并非对象,它只是为一个已存在的对象所起的另外一个名字. 除了以下2种情况,其他所有引用的类型 ...

  3. 浅谈const限定符

    什么是const限定符? Const限定符是我们通常所说的常量限定符,被const修饰的对象具有常量性质,只能读,不能写. 为什么使用const限定符? 用const变量取代“魔数”,代码更容易理解和 ...

  4. Chapter03 第二节 const限定符的使用

    3.2 const限定符 const的作用:替代#define作为有类型检查的常量来使用.他的值被初始化后就固定了,成为一个只读变量,不能更改.(推荐使用特殊的命名规范来区分常量和非常量). cons ...

  5. C++const限定符

    在C语言中我们使用#define宏定义的方式来处理符号常量.而在C++中有一种更好的处理符号常量的方法,那就是使用const关键字来修改变量声明和初始化.这种处理常量方式的好处不言而喻:如果程序在多处 ...

  6. const 限定符

    1.定义const对象 const限定符把一个对象转换成一个常量 const int Bufsize = 512; 定义Bufsize 为常量并初始化为512.变量Bufsize仍然是一个左值,但是不 ...

  7. C++杂谈(一)const限定符与const指针

    const限定符 c++有了新的const关键字,用来定义常变量,可以替C语言中的#define.关于const限定符,有以下需要注意: 1.创建后值不再改变 2.作用范围在文件内有效 3.添加ext ...

  8. C++ Primer 第二章 引用 指针 const限定符

    1.引用: 为对象起了另外一个名字,引用类型引用另外一种类型,通过将声明符写成&d的形式来定义引用类型,其中d也就是声明的变量名(声明符就是变量名). PS:1.通过图片中编译所提示的报错信息 ...

  9. 指针和Const限定符

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

随机推荐

  1. C语言占位符

    占位符就是先占住一个固定的位置,等着你再往里面添加内容的符号,广泛用于计算机中各类文档的编辑. 格式占位符(%)是在C/C++语言中格式输入函数,如 scanf.printf 等函数中使用.其意义就是 ...

  2. 使用AKLocationManager定位

    使用AKLocationManager定位 https://github.com/ideaismobile/AKLocationManager 以下是使用情况: 是不是很简单呢,我们可以将它的步骤进一 ...

  3. 解决win 和 ubuntu 虚拟机之间 无法 复制粘贴的问题,以及重装vmtool后,还是无法解决的办法

    第一步:重新安装vmware-tool 我这里已经装过了,所以显示这个,不然应该是显示:安装 VMware Tools 它会打开一个文件夹,把压缩包复制到任一个地方解压,执行.pl的那个文件:sudo ...

  4. 作业一 制作PC配置 吴昊

  5. 初识android界面布局

    1.活动 活动是android开发中最基本的概念,也是最容易吸引用户的地方,是一种可以包含用户界面的组件. Activity类中定义了7个回调方法,覆盖了活动生命周期的每一个环节.具体如下: (1)o ...

  6. [转]Linux下查看CPU信息、机器型号等硬件信息

    From: http://www.jbxue.com/LINUXjishu/14582.html 查看CPU信息(型号) : # cat /proc/cpuinfo | grep name | cut ...

  7. Ext 向Ext.form.ComboBox()中添加列表的分类

    1.静态 [javascript] view plaincopy var staticComboBox = new Ext.form.ComboBox({   fieldLabel:'回访结果',   ...

  8. 按要求分解字符串,输入两个数M,N;M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0。例如:输入2,8, “abc” ,“123456789”,则输出为“abc00000”,“12345678“,”90000000”

    import java.util.ArrayList; import java.util.Scanner; public class Text { @SuppressWarnings("re ...

  9. thusc2018真退役记

    $day1$: 看了三道题,感觉这次特别毒瘤啊.. $t1$想了一会儿,发现是个傻逼题,然后切掉了. $t2$想了很久,不会,先去搞题答. 题答搞了很久,只搞出第一个点,后面的点根本没看出是什么意思. ...

  10. 通过golang 查询impala

    cloudera官方没有提供impala基于golang的驱动,github有github.com/bippio/go-impala package main import ( "conte ...