C++11-14 第8講 =default =delete
阿新 • • 發佈:2018-11-12
default constructor(預設建構函式)空函式
如果自己定義了一個建構函式,編譯器就不會再提供一個預設建構函式。
如果強制加一個=default,會繼續給一個預設建構函式。
引數相同,再要求提供建構函式會報錯。
class P { public: P(int i1,int i2):d1(i1),d2(i2){} P(const P& tmp):d1(tmp.d1),d2(tmp.d2){} //P(const P&) = delete;//複製構造,delete不要預設建構函式 //P(const P&) = default;//兩個都是因為已經有了複製建構函式,不能再有預設的 P(P &&) = default;//搬移構造,default要預設建構函式 P &operator=(const P&) = default;//拷貝賦值 P&operator=(const P&&) = delete;//搬移賦值 virtual ~P(){} private: int d1, d2; }; struct NoDtor { NoDtor() = default; //~NoDtor() = delete;//沒有解構函式,後果自負 };