const限定符用法汇总
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限定符用法汇总的更多相关文章
- C++ const 限定符
C++ const 限定符 作用:把一个对象转换成一个常量 用法:const type name = value; 性质:1. 定义时必须初始化,定义后不能被修改.2. 类中的const成员变量必须通 ...
- 变量和基本类型——复合类型,const限定符,处理类型
一.复合类型 复合类型是指基于其他类型定义的类型.C++语言有几种复合类型,包括引用和指针. 1.引用 引用并非对象,它只是为一个已存在的对象所起的另外一个名字. 除了以下2种情况,其他所有引用的类型 ...
- 浅谈const限定符
什么是const限定符? Const限定符是我们通常所说的常量限定符,被const修饰的对象具有常量性质,只能读,不能写. 为什么使用const限定符? 用const变量取代“魔数”,代码更容易理解和 ...
- Chapter03 第二节 const限定符的使用
3.2 const限定符 const的作用:替代#define作为有类型检查的常量来使用.他的值被初始化后就固定了,成为一个只读变量,不能更改.(推荐使用特殊的命名规范来区分常量和非常量). cons ...
- C++const限定符
在C语言中我们使用#define宏定义的方式来处理符号常量.而在C++中有一种更好的处理符号常量的方法,那就是使用const关键字来修改变量声明和初始化.这种处理常量方式的好处不言而喻:如果程序在多处 ...
- const 限定符
1.定义const对象 const限定符把一个对象转换成一个常量 const int Bufsize = 512; 定义Bufsize 为常量并初始化为512.变量Bufsize仍然是一个左值,但是不 ...
- C++杂谈(一)const限定符与const指针
const限定符 c++有了新的const关键字,用来定义常变量,可以替C语言中的#define.关于const限定符,有以下需要注意: 1.创建后值不再改变 2.作用范围在文件内有效 3.添加ext ...
- C++ Primer 第二章 引用 指针 const限定符
1.引用: 为对象起了另外一个名字,引用类型引用另外一种类型,通过将声明符写成&d的形式来定义引用类型,其中d也就是声明的变量名(声明符就是变量名). PS:1.通过图片中编译所提示的报错信息 ...
- 指针和Const限定符
指针和Const限定符 1.指向const对象的指针 如果指针指向的是const对象,则不允许使用指针来改变其所指的const值.C++要求指向const对象的指针具有const特性. const d ...
随机推荐
- JBoss服务器优化
JBOSS参数调优 配置deploy/jboss-web.deployer/server.xml文件 . <Connector port="8080" address=&qu ...
- C#的Lambda 表达式都使用 Lambda 运算符 =>,该运算符读为“goes to”。语法如下:
形参列表=>函数体 函数体多于一条语句的可用大括号括起. 类型 可以将此表达式分配给委托类型,如下所示: delegate int del(int i); del myDelegate = ...
- winform messagebox自动关闭
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- linux克隆机器
首先你要先点击你的虚拟机点击克隆: 然后执行这个 vim /etc/sysconfig/network-scripts/ifcfg-eth0 去这里修改这两行 然后注释了 然后再执行这个 > / ...
- Flask 的馈赠
我们在之前用过装饰器 但是在装饰很多函数的时候 那么这些函数的名字都是装饰器内部函数的名字了怎么办呢? django中有functools进行保留你的函数名字保存 flask也可以使用functo ...
- 1. 跟踪标记 (Trace Flag) 1117, 1118 文件增长及空间分配方式
跟踪标记:1117 功能: 默认,同一个文件组下的多个文件,如果某个文件没有可用空间,且设置了自动增长,则该文件自动增长,其他文件大小保持不变: 开启后,同一文件组下的多个文件,如果某个文件没有可用空 ...
- How HashMap works in Java
https://www.javainterviewpoint.com/hashmap-works-internally-java/ How a HashMap Works internally has ...
- QuickBI助你成为分析师-数据建模(二)
摘要: 数据集编辑功能界面介绍以及常见问题总结. 在数据集编辑界面可以进行数据建模来更好的展示数据,创建数据集默认将数值类型字段作为度量,日期.字符串等类型作为维度,度量可以根据维度分组展示.下面来介 ...
- 作业一 制作PC配置 吴昊
- 3种web会话管理方式
一.基于server端的session管理 在早期web应用中,通常使用服务端session来管理用户的会话.快速了解服务端session: 1) 服务端session是用户第一次访问应用时,服务器就 ...