相关疑难解决方法(0)

如何使此C++对象不可复制?

见标题.

我有:

class Foo {
   private:
     Foo();
   public:
     static Foo* create();
}
Run Code Online (Sandbox Code Playgroud)

我需要做什么才能让Foo无法复制?

谢谢!

c++ copy-constructor noncopyable

64
推荐指数
8
解决办法
5万
查看次数

使类不可复制*和*不可移动

在C++ 11之前,我可以使用它来使类不可复制:

private:
MyClass(const MyClass&);
MyClass& operator=(const MyClass&);
Run Code Online (Sandbox Code Playgroud)

使用C++ 11,我可以这样做:

MyClass(const MyClass&) = delete;
MyClass& operator=(const MyClass&) = delete;
Run Code Online (Sandbox Code Playgroud)

使用具有已删除副本和赋值的类时,是否有可能生成默认移动运算符?而且这个类并没有被完全复制,而是被移动(这有点类似)?

那么,我是否必须这样做以防止默认移动构造和assignmnent:

MyClass(MyClass&&) = delete;
MyClass& operator=(MyClass&&) = delete;
Run Code Online (Sandbox Code Playgroud)

......?

c++ constructor move move-semantics c++11

13
推荐指数
2
解决办法
5401
查看次数