我正在尝试在C ++ / CLI中找到赋值运算符和复制构造函数的示例。我花了很多时间在谷歌上,令人惊讶的是我找不到一个看似很常见的好东西。
答案 0 :(得分:5)
.NET语义没有复制构造函数或赋值运算符。您可以在ref class
es中定义一个,但如果您明确请求复制,它将只在C ++端中使用对于值类,一切都是内置的,您不能覆盖复制语义
示例:
public ref class Foo
{
Foo(const Foo% f);
};
Foo^ f = gcnew Foo;
Foo^ g = gcnew Foo(*f); // This will call C++ copy constructor. No .NET equivalent.
如果要在.NET样式中实现深层复制语义,请查看ICloneable
。
同时查看there以获取您可以拥有的不同复制行为。我强烈反对在堆栈中存储ref class
es。