class test{
test(test);
//test(test*);
};
我很好奇为什么 c++ 禁止在构造函数中使用类的类型参数。编译器很难处理吗?
因为它会生成一个递归构造函数。当您按值传递时,它需要在传递参数之前复制构造参数...调用test(test)
,需要...您得到图片。
您需要通过引用传递复制构造函数:test(const test& rhs)
.
当您按值传递参数时,它会被复制。因此,对于通过值传递到复制构造函数的参数,它必须被复制。但是复制机制是你正在定义的。那么如何复制而不能复制呢?
您不能,因此复制构造函数不能按值接受(因此test(const test& t)
而不是test(test t)
)。
因为无限递归。您在构造函数中按值传递原始对象,因此应该使用您正在调用的相同构造函数来复制它。