C++中引用和const关键字怎么用
发表于:2025-01-16 作者:千家信息网编辑
千家信息网最后更新 2025年01月16日,今天小编给大家分享一下C++中引用和const关键字怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我
千家信息网最后更新 2025年01月16日C++中引用和const关键字怎么用
今天小编给大家分享一下C++中引用和const关键字怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
引用
下面的写法定义了一个引用,并将其初始化为引用某个变量。
类型名 & 引用名 = 某变量名;
int n = 4;int & r = n; // r 引用了n,r的类型是 int &
某个变量的引用,等价于这个变量,相当于该变量的一个别名。
int n = 7;int & r = n; // r 引用了n,r和n就是一回事r = 4;cout << r; // 输出4cout << n; // 输出4n = 5;cout << 4; // 输出5
定义引用时一定要将其初始化成引用某个变量。
初始化之后,它就一直引用该变量,不会再引用别的变量了。
引用只能引用变量,不能引用常量和表达式。
double a = 4, b = 5;double & r1 = a; // r1引用了adouble & r2 = r1; // r2也引用了ar2 = 10; // a修改为10cout << a << endl; // 输出10r1 = b; // 用b的值对r1进行赋值,并非r1改为引用b,因为引用是"从一而终"的cout << a << endl; // 输出5
常引用
定义引用时,前面加const关键字,即为"常引用"。
int n;const int & r = n; // r的类型是const int &
不能通过常引用去修改其引用的内容:
并不是说引用的内容不能被修改
int n = 100;const int & r = n;r = 200; // 编译错误n = 300; // ok
常引用和非常引用的转换
const T &和T &是不同的类型。
T &类型的引用或T类型的变量可以用来初始化const T &类型的引用。
const T类型的常变量和const T &类型的引用则不能用来初始化T &类型的引用,除非进行强制类型转换。
const关键字用法
1)定义常量
const int MAX_VAL = 23;const double PI = 3.14;const string NAME = "Tommy";
2)定义常量指针
不能通过常量指针修改其指向的内容,但内容本身可以被修改,且常量指针的指向可以变化。
int n, m;const int *p = &n;*p = 5; // 编译错误n = 4; // okp = &m; // ok,常量指针的指向可以变化
不能把常量指针赋值给非常量指针,反过来可以。
const int *p1;int *p2;p1 = p2; // okp2 = p1; // errorp2 = (int*)p1; // ok,强制类型转换
[注] 因为常量指针对其所指向的内容没有修改权限,自然也不能赋予别的指针这样的权限。否则,非常量指针接收常量指针的赋值之后,便可以修改所指向的内容了,这存在一定安全隐患。
函数参数为常量指针时,可避免函数内部不小心改变参数指针所指地方的内容。
void MyPrintf(const char *p){ strcpy(p, "this"); // 编译出错 printf("%s", p); // ok}
3)定义常引用
不能通过常引用修改其引用的变量
int n;const int & r = n;r = 5; // errorn = 4; // ok
以上就是"C++中引用和const关键字怎么用"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。
变量
类型
指针
常量
内容
指向
输出
关键
关键字
知识
篇文章
编译
C++
不同
函数
参数
就是
权限
错误
面的
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全防护手段什么意思
三级网络技术分数
php云服务器
澳洲网络安全厉害吗
云服务器cvm是软件虚拟机吗
凤凰os无法连接服务器
广州益众互联网科技有限公司
数据库锁表时间很长
宁波物联网智慧社区软件开发
云服务器端口配置视频教程
服务器 u盘装系统
做一个调取数据库的前台
打电话响两声无法连接服务器
pop3服务器地址在哪里
报网络技术岗位专长怎么写
杭州人行网络技术有限公司
深圳百度计算机与网络技术
中国科技互联网龙头股
数据库建立报告心得
csgo换图检索服务器
vps 一键安装代理服务器
wnd数据库收费标准
国研网数据库主要文献类型
云服务器cvm是软件虚拟机吗
探探软件开发时间
服务器配置和管理问题
哪种是流行的数据库技术
iea数据库哪些学校有
软件项目数据库备份策略
无人驾驶5g网络安全吗