拒絕編譯器自動生成的函數

編譯器自動的函數:

  • 默認構造函數
  • 析構函數
  • 拷貝構造函數
  • 賦值構造函數(operator =)

有些場景中需要拒絕這些編譯器自動生成的函數,可以通過下列方法,定義Uncopyable類並繼承它。
拒絕使用編譯器生成的函數:

class Uncopyable
{
    protected:     //允許derived對象析構
        Uncopyable(){};
        ~Uncopyable(){};
    private:       //拒絕copy
        Uncopyable(const Uncopyable&); //在這裏聲明,不用定義
        Uncopyable& operator=(const Uncopyable&)
};

這樣編譯器就可以拒絕產生copy構造函數,和operator=。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章