Maxbad`Blog

C++ 类中的构造函数

2020-12-16 · 1 min read

https://docs.microsoft.com/zh-cn/cpp/cpp/explicitly-defaulted-and-deleted-functions?view=msvc-160

编译器默认为一个类生成的默认函数

  • 默认构造函数
  • 默认析构函数
  • 默认拷贝构造函数
  • 默认赋值函数
  • 移动构造函数
  • 移动拷贝函数
class DataOnly {
public:
    DataOnly ()                  // 默认构造函数
    ~DataOnly ()                 // 默认析构函数

    DataOnly (const DataOnly & rhs)              // 默认拷贝构造函数
    DataOnly & operator=(const DataOnly & rhs)    // 默认赋值函数

    DataOnly (const DataOnly && rhs)         // C++11, 移动构造函数
    DataOnly & operator=(DataOnly && rhs)    // C++11, 移动拷贝函数
};

类不可复制的通用写法

struct noncopyable
{
  noncopyable() =default;
  noncopyable(const noncopyable&) =delete;
  noncopyable& operator=(const noncopyable&) =delete;
};