copy-constructor相关问题(native c ++)

Vis*_*iva 4 c++ syntax class copy-constructor

可能重复:
为什么复制构造函数应该通过C++中的引用接受其参数?

我知道复制构造函数必须有一个引用作为参数,以避免对自身进行"无限次调用".我的问题是 - 为什么会发生这种情况,背后的逻辑是什么?

CExample(const CExample& temp)
{
   length = temp.length;
}
Run Code Online (Sandbox Code Playgroud)

ami*_*mit 6

假设你的副本C'tor的参数是通过值传递的,C'tor所做的第一件事就是复制参数[这就是每个函数,包括构造函数使用by-value参数].为了做到这一点,它必须再次调用C'tor,从原始变量到局部变量...... [并且一遍又一遍......]这将最终导致无限循环.