3
4

2 回答 2

2

考虑到我想要复制构造函数和我的类中的整数构造函数,如何成功编译它?

添加const到复制构造函数的引用参数可以解决这个问题:

myclass(const myclass &a) : n(a.n) {}

ideone 上的演示

于 2013-07-11T15:51:18.337 回答
2

这种情况下的初始化语义是复制初始化。复制初始化正式转换争论,然后复制它。转换后的参数不是左值,因此它不能绑定到复制构造函数中的非常量引用。如果你没有定义复制构造函数,编译器会为你定义一个,它接受一个 const 引用。您的复制构造函数也应该采用 const 引用,因为它不会修改其参数。

请注意,允许编译器优化复制构造。但只有在程序不合法的情况下才是合法的。

于 2013-07-11T15:56:51.633 回答