哪个是C ++的正确形式 - CLI复制构造函数?

时间:2015-02-24 10:04:01

标签: c++-cli copy-constructor

我有一些像这样的代码:

MyClass::MyClass(MyClass^ objToCopyFrom);

产生错误:

  

'类型' :ref类没有用户定义的复制构造函数

当我查找the error时,它表明我的代码应如下所示:

MyClass::MyClass(MyClass% objToCopyFrom);

因此,我的问题是,哪个版本是正确的还是正确的?

1 个答案:

答案 0 :(得分:1)

只有你的第二个版本是正确的:

MyClass::MyClass(MyClass% objToCopyFrom);

或其变体:

MyClass::MyClass(const MyClass% objToCopyFrom);

MyClass%是一个所谓的Tracking Reference,它是本机C ++中引用的概念等价,仅适用于CLR类型。

虽然copy constructors in native C++可以有许多不同的签名,但它们的共同之处在于,正在复制的其他对象是作为引用。 C ++ / CLI保持接近该原则,但使用自己类型的对象引用,即跟踪引用。