为了账号安全,请及时绑定邮箱和手机立即绑定

对于将 test3 改为 test3(Data data) 问题的描述,似乎不妥。

对于将 test3 改为 test3(Data data) 问题的描述,似乎不妥。


/*

编译错误:Copy constructor must pass its first argument by reference


参数列表中,若写的是一个对象,则在传参时,将调用其拷贝构造函数,那么问题就会出现:

我们将要调用的这个函数,就是拷贝构造函数,

所以,若在参数列表中,写一个对象的话,则在传参时,就会又调用一次拷贝构造函数,

然后在调用,从而陷入无限循环中去。

*/

Data(Data data);


上述「我们将要调用的这个函数,就是拷贝构造函数」是什么鬼?

说的是 test3(const Data& data) 吗?

先不说它根本就不是一个拷贝构造函数,仅仅是长得像而已。

这里你已经假设把 test3 改为了 test3(Data data) ,哪来的拷贝构造函数?

如果不是的话,那么「我们将要调用的这个函数,就是拷贝构造函数」,

是意思是在 test3(Data data) 函数体中调用 Data 的「拷贝构造函数」吗?


正在回答

举报

0/150
提交
取消
趣味 C++ 进阶
  • 参与学习       13920    人
  • 解答问题       44    个

本课程是 C++ 的进阶课程,继续趣味学习之旅,带你探索 C++ 的高级用法。

进入课程

对于将 test3 改为 test3(Data data) 问题的描述,似乎不妥。

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信