我是靠谱客的博主 真实皮皮虾,最近开发中收集的这篇文章主要介绍c++ 函数返回const引用_C++复制构造函数的形参为什么是const引用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1 为什么是引用?

举例

CBox(CBox initB);//复制构造函数一开始想到的原型
CBox cigar;
CBox myBox(cigar); //如果编写这样一条语句
//那么将生成这样一条对复制构造函数的调用CBox::CBox(cigar);

因为实参是通过按值传递机制传递的。在可以传递对象cigar之前,编译器需要安排创建该对象的副本。因此,编译器为了处理复制构造函数的这条调用语句,需要调用复制构造函数来创建实参的副本。但是,由于是按值传递,第二次调用同样需要创建实参的副本,因此还得调用复制构造函数,就这样持续不休。最终得到的是对复制构造函数的无穷调用。(其实就是创建副本也是需要调用复制构造函数的

所以解决办法先是要将形参改为引用形参:

CBox (CBox &initB);

2 为什么是const?

如果不去改变实参的值的话,不加const的效果和加const的效果是一样的,而且不加const编译器也不会报错,因为函数的形参是引用,则调用函数时不需要复制实参,函数是直接访问调用函数中的实参变量的。但是为了整个程序的安全,还是加上const,防止对实参的意外修改~所以这里再将复制构造函数原型改为以下这种形式:

CBox (const CBox &initB);

参考

C++——复制构造函数的形参为什么要是const引用​blog.csdn.net

最后

以上就是真实皮皮虾为你收集整理的c++ 函数返回const引用_C++复制构造函数的形参为什么是const引用的全部内容,希望文章能够帮你解决c++ 函数返回const引用_C++复制构造函数的形参为什么是const引用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部