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

来源:6-6 管理内存:向函数中传入一个对象

梨多情

2024-07-26 12:45

对于将 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回答

还没有人回答问题,可以看看其他问题

趣味 C++ 进阶

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

13927 学习 · 44 问题

查看课程

相似问题