大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
const,默认情况下仅在文件内有效
const int i(12);
const引用:对常量的引用不能被用作修改它所绑定的对象
const int ci(5);
const int &rci(ci);
rci = 90;//错误 不能修改
允许常量引用绑定到非常量的对象、字面值或表达式上
int i = 20;
const int &ri(20);
const int &ri3(i + ri);
常量引用仅对引用可参与的操作作出了限定,对于引用的对象本身未做限定
int i(10);
const int &c(i);
i = 90;//i不是常量,可以改变值
c = 20;//错误,c是一个常量引用,const限定了c为常量不能修改,i的修改与c的限定无关。
cout << c << endl;//值为90
//指针和const
int iv(10);
int iv1(23);
const int * pci1(&iv);//指向常量的指针,限定了该指针的操作,pci1的值可以改变,pcil指向的值不能变
pci1 = &iv1;
iv = 30;
int * const pci2(&iv);//常量指针,把指针本身定位常量,pci2的值不能改变,pci2指向的值可以改变
*pci2 = 90;
cout << *pci1 << endl;//23
cout << *pci2 << endl;//90
顶层和底层
顶层:表示指针本身是个常量
底层:指针所指的对象是常量
小技巧:const int * p: const修饰的是*p,也就是*p不能变。
int * const p: const修饰的是p,也就是p不能变。
字面值和constexpr
常量表达式:字面值是常量表达式,用常量表达式初始化的const对象也是常量表达式
const int ci = 20;//ci是常量表达式
const int cii = ci + 90;//cii是常量表达式
int iv = 30;//iv不是常量表达式
声明为constexpr的变量一定是常量,而且必须用常量表达式初始化
constexpr int cif = 23;
constexpr声明的指针,只对指针有效,与指针指向的对象无关
constexpr int cvi(12);//必须定义到函数体外部才能被cip使用
constexpr const int * cip(&cvi);
cout << *cip << endl;
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/187801.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...