C++ 如何編寫禁止拷貝的基類

//禁止拷貝基類
class noncopyable{
protected:
	noncopyable() {}
	~noncopyable() {}
private:
	noncopyable(const noncopyable &that) = delete;//delete拷貝構造函數
	noncopyable(noncopyable &&that) = delete;//delete移動構造函數
	noncopyable &operator=(const noncopyable &that) = delete;//delete拷貝賦值運算符
	noncopyable &opetator=(const noncopyable &&that) = delete;//delete移動賦值運算符
};

下面再複習一下移動構造函數和移動賦值運算符
類似拷貝構造函數,移動構造函數的第一個參數是該類類型的一個引用。不同於拷貝構造函數的是,這個引用參數在移動構造函數中是一個右值引用,與拷貝構造函數一樣,任何額外的參數都必須有默認實參。除了完成資源移動,移動構造函數須確保移動後源對象銷燬是無害的。特別是當資源完成移動,源對象須不再指向被移動的資源,這些資源的所有權已經歸屬新創建的對象。

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