2026/1/19 7:42:54
网站建设
项目流程
鲜花网站建设的利息分析,域名解析在线工具,域名时间与网站优化,深圳宝安龙岗紧急寻人const引用
• 可以引⽤⼀个const对象#xff0c;但是必须⽤const引⽤。const引⽤也可以引⽤普通对象#xff0c;因为对象的访问权限在引⽤过程中可以缩⼩#xff0c;但是不能放⼤。
#define _CRT_SECURE_NO_WARNINGS 1
using namespace std;
#include iostreamint m…const引用• 可以引⽤⼀个const对象但是必须⽤const引⽤。const引⽤也可以引⽤普通对象因为对象的访问权限在引⽤过程中可以缩⼩但是不能放⼤。#define _CRT_SECURE_NO_WARNINGS 1 using namespace std; #include iostream int main() { const int a 10; int ra a; //这里会出现报错 return 0; }鲁迅不能干关我周树人什么事情这属于偷换概念//权限的缩小 int b 1; const int rb b; rb;//报错 b;//这并不是权限的放大这是y拷贝了x的内容开辟了另一块空间 //权限的放大和缩小一种是在引用还有一种是指针 const int x 0; int y x;这是指针的情况int main() { //权限的放大 int a 10; const int* p1 a; //int* p2 p1; //权限的缩小 int b 10; int* p3 b; const int* p4 p3; //不存在权限的放大和缩小 //const在*之后修饰指针本身在*之前是指向的内容 int* const p5 b; int* p6 p5; return 0; }• 需要注意的是类似 int rb a3; double d 12.34; int rd d; 这样⼀些场景下a3的和结果保存在⼀个临时对象中 int rd d 也是类似在类型转换中会产⽣临时对象存储中间值也就是时rb和rd引⽤的都是临时对象⽽C规定临时对象具有常性所以这⾥就触发了权限放⼤必须要⽤常引⽤才可以。• 所谓临时对象就是编译器需要⼀个空间暂存表达式的求值结果时临时创建的⼀个未命名的对象C中把这个未命名对象叫做临时象。void f1(const int rx) { } int main() { const int xx 20; int a 10; const int ra a*3; double b 12.34; const int rb b; f1(xx); f1(a); f1(b); f1(a * 3); return 0; }const引用的价值在于可以引用const对象普通对象临时对象