文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C++中引用和const关键字介绍

2024-04-02 19:55

关注

引用

下面的写法定义了一个引用,并将其初始化为引用某个变量。
类型名 & 引用名 = 某变量名;

int n = 4;
int & r = n; // r 引用了n,r的类型是 int &

某个变量的引用,等价于这个变量,相当于该变量的一个别名。

int n = 7;
int & r = n;	// r 引用了n,r和n就是一回事
r = 4;
cout << r;		// 输出4
cout << n;		// 输出4
n = 5;
cout << 4;		// 输出5

定义引用时一定要将其初始化成引用某个变量。
初始化之后,它就一直引用该变量,不会再引用别的变量了。
引用只能引用变量,不能引用常量和表达式。

double a = 4, b = 5;
double & r1 = a;	// r1引用了a
double & r2 = r1;	// r2也引用了a
r2 = 10;			// a修改为10
cout << a << endl;	// 输出10
r1 = 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;	// ok
p = &m;	// ok,常量指针的指向可以变化

不能把常量指针赋值给非常量指针,反过来可以。

const int *p1;
int *p2;
p1 = p2;		// ok
p2 = p1;		// error
p2 = (int*)p1;	// ok,强制类型转换

[注] 因为常量指针对其所指向的内容没有修改权限,自然也不能赋予别的指针这样的权限。否则,非常量指针接收常量指针的赋值之后,便可以修改所指向的内容了,这存在一定安全隐患。

函数参数为常量指针时,可避免函数内部不小心改变参数指针所指地方的内容。

void MyPrintf(const char *p)
{
	strcpy(p, "this"); 	// 编译出错
	printf("%s", p);	// ok
}

3)定义常引用

不能通过常引用修改其引用的变量

int n;
const int & r = n;
r = 5; // error
n = 4; // ok

总结

到此这篇关于C++中引用和const关键字介绍的文章就介绍到这了,更多相关C++引用和const关键字内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯