編譯器自動的函數:
- 默認構造函數
- 析構函數
- 拷貝構造函數
- 賦值構造函數(operator =)
有些場景中需要拒絕這些編譯器自動生成的函數,可以通過下列方法,定義Uncopyable類並繼承它。
拒絕使用編譯器生成的函數:
class Uncopyable
{
protected: //允許derived對象析構
Uncopyable(){};
~Uncopyable(){};
private: //拒絕copy
Uncopyable(const Uncopyable&); //在這裏聲明,不用定義
Uncopyable& operator=(const Uncopyable&)
};
這樣編譯器就可以拒絕產生copy構造函數,和operator=。