c++初级 之 const与常量
来源:互联网 发布:java代码大全 下载 编辑:程序博客网 时间:2024/06/06 02:01
#include<iostream>#include<stdlib.h>using namespace std;int main(){int a = 3; //整型变量(定义时不一定要赋初值)const int b = 4; //整型常量(定义时必须要赋初值,否则报错)int b1 = b;//常量仍拥有赋值的功能,可以给变量赋值(无任何风险)//int * b2 = &b;//报错,因为右边的b是整型常量,左边b2却是指向整型变量,那势必会有通过*b2(int型变量)修改b(int常量)的风险//int &b3 = b;//报错,因为b是整常,b3却是整变的别名(引用),那势必会有通过b3(int型变量的引用)修改b(int常量)的风险int const c = a; //int const与const int等价,而且可以由变量a向常量c赋值功能(无任何风险)int const * p; //const在*之前,则const修饰的实际上是int,表示p指向的量*p是int型常量(const int)不能被修改。而p其实没有被const修饰,仍是变量,所以不是必须赋初值p = &a; //变量p可以被赋值和修改,即指向别的量//*p = 0;//常量*p不能被修改,报错a = 0; //a仍可以修改int const *const p2 = &a; //const在*之后,则后面这个const实际修饰的就是p2了,表示p2是常量,不能被修改//p2 = &b;//报错int const* p3 = &b;//无风险const int * const p4 = &c;//无风险const int &d = a;//d是a的引用(别名)常量,被const修饰,b不可被改变(无风险)//d = 3;//报错a = 80;//但a仍可以改变return 0;}/*const只是对它真正修饰的量有作用,说明该量不可修改,谁给该量赋初值其实无所谓,只要没有风险,都可以。*/对于const的理解,其本质:真正被const修饰的量是无法被修改的量(常量)。所以:
1.对于“真正”的理解:要看清const真正修饰的是谁,一个真正被const修饰的量即为常量,不可被改变。反例比如const int *p,这个const真正修饰的是int,是p指向的那個int型的量*p,所以*p是常量,无法被改变;而p其实没有被const修饰,所以p仍是一个变量,指针变量,p可以被改变。
2.在定义一个真正被const修饰的量(常量)时,必须要给它赋初值(包括类的常数据成员,在调用构造函数时,必须给常成员用初始化列表方式赋初值),之后再也不能改变它的值;但常量的其它功能不会丧失 (比如可以拿常量给别的量赋值等等)
3.其实判断赋值是否合法,就是看风险:如果常量有被修改的风险,那么这个赋值肯定不合法,会报错,如果没风险,那就是合法的,可以赋值。比如上面的:
int &b3 = b;b这个常量就有被b3修改的风险。
阅读全文
0 0
- c++初级 之 const与常量
- java初级之6常量与变量
- C/C++中的const--常量指针与指针常量
- C/C++中define定义的常量与const常量
- c 常量 const
- C++const/常量折叠
- C/C++: const常量与define宏定义的区别
- C语言之const常量(摘自C和指针)
- C++/C-const常量-20170105
- C/C++定义常量#define与const比较
- C/C++定义常量#define与const比较
- 浅尝C++——const与#define定义符号常量
- C语言拾遗:常量指针与指针常量(const int *ptr, int const *ptr, int * const ptr, const int * const ptr区别)
- c++——常量Const
- (C++)const 常量类型
- c语言const常量使用
- C语言中的const用法以及常量指针与指针常量(有口诀!)
- Const指针与Const常量的在C编译器之间的匹配
- 第一次写blog C语言指针数组和数组指针
- redis之list类型
- vi 命令的修改,复制,删除
- Java 课下作业 T3
- 第十三篇:生产者—消费者模型(含代码)
- c++初级 之 const与常量
- [USACO5.5.2]Hidden Password
- Hibernate初识
- Java代理
- iOS 缩放隐藏动画
- linux 压缩与解压缩
- Linux缓冲区溢出原理及防护手段
- orbslam2学习笔记1
- Recyclerview的用法