我正在尝试在C++/CLI中找到赋值运算符和复制构造函数的示例.我花了很多时间在谷歌上,令人惊讶的是我找不到一个看似很常见的好东西的例子.
.NET语义没有复制构造函数或赋值运算符.您可以在ref classes中定义一个,但如果您明确请求复制,它将仅在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.
Run Code Online (Sandbox Code Playgroud)
看看ICloneable是否要在.NET样式中实现深层复制语义.
还可以在那里获得您可以拥有的不同复制行为.我强烈建议不要ref class在堆栈上存储es.