const限定符用法汇总
2024-10-19 11:45:40
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" 类型的初始值设定项时,限定符被丢弃
最新文章
- 2000条你应知的WPF小姿势 基础篇<;22-27 WPF生命周期, 基础类等>;
- Java设计模式——线程安全的单件模式
- Mac iTerm2命令行快捷操作
- 用MVVM做了一个保存网页的工具-上篇
- 51nod 1605 棋盘问题 (博弈)
- web兼容性测试
- C#中通过三边长判断三角形类型(三角形测试用例)
- java -d64
- 【转】MessageBox
- 优雅地使用CodeIgniter 3之Session类库(1)(转)
- Linux内核开发基础
- 如何理解CSS中的浮动 :其实他就像乘坐扶梯一样
- 找到一个新的超好用的U盘启动制作工具了
- Ubuntu14.04安装有道词典
- 共享表空间VS独立表空间
- Git篇(基础)
- 常见问题一之拼接表格 js传递参数变量 Json接收值
- openvpn 给客户端固定隧道IP地址
- AnjularJS表单回车提交事件
- VS2010 SP1安装失败之”此计算机的状态不支持此安装“()