【C++】拷贝构造函数中的形参是const引用类型的,为何需要引用且为const引用?

您所在的位置:网站首页 形参类型和什么有关 【C++】拷贝构造函数中的形参是const引用类型的,为何需要引用且为const引用?

【C++】拷贝构造函数中的形参是const引用类型的,为何需要引用且为const引用?

2024-07-13 02:15:13| 来源: 网络整理| 查看: 265

根本原因

在c++中,传值时就是形参是实参的一份拷贝,传引用时形参和实参是一个东西。

返回类型也一样,返回值则是拷贝一份返回,返回引用则返回同一个东西(注意不要返回局部对象的引用,函数退出时对应的空间已被释放)。

直接原因

由于(根本原因)形参是实参的一份拷贝,如果直接传递值给拷贝构造函数而不是传引用,那么形参对象会拷贝实参对象,这个拷贝过程又调用拷贝构造函数(第二次),在第二次调用拷贝构造函数时,形参对象继续拷贝实参对象,继续调用拷贝构造函数(第三次)…陷入死循环。

因此需要传引用给拷贝构造函数。

为何拷贝构造函数要用const引用?

在这里没有太复杂的原因,就是为了表明拷贝构造函数中没有对传递进来的对象做任何修改,也是防止拷贝构造函数对对象进行修改,更加严谨安全。实际上不加const也是可以照常运行的,就是不够严谨。养成习惯:不需要改变对象时,传引用时加上const。

为何要用const引用? 将传值换成传const引用可以避免产生临时变量,这样避免就可以减少很多不必要的时间和空间的开销;对右值的引用如果不用右值引用(&&)就必须传递const引用,因为普通引用没法引用右值(字面值常量、临时量等),实际上,不使用常量引用会极大限制函数所能接受的实参类型,因为我们不能把const对象、字面值或者需要类型转换的对象传递给非常量引用;如上所述,保证传递的实参没有被修改,同时也表明函数内不对实参进行修改(对指针的const引用除外,如果只有顶层const,对于指针形参进行const引用依然可以改变指针指向的内存地址存放的内容,可以参考这篇博客)。


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭