在C++11以后,default
關(guān)鍵字的使用方式得到了擴展,主要有以下幾種用法:
默認(rèn)構(gòu)造函數(shù)中的defaulted
函數(shù)體:在類的構(gòu)造函數(shù)聲明中指定default
關(guān)鍵字來聲明默認(rèn)的構(gòu)造函數(shù),例如 ClassName() = default;
。
默認(rèn)析構(gòu)函數(shù)中的defaulted
函數(shù)體:在類的析構(gòu)函數(shù)聲明中指定default
關(guān)鍵字來聲明默認(rèn)的析構(gòu)函數(shù),例如 ~ClassName() = default;
。
默認(rèn)拷貝構(gòu)造函數(shù)和拷貝賦值操作符中的defaulted
函數(shù)體:在類中指定default
關(guān)鍵字來聲明默認(rèn)的拷貝構(gòu)造函數(shù)和拷貝賦值操作符,例如 ClassName(const ClassName&) = default;
和 ClassName& operator=(const ClassName&) = default;
。
默認(rèn)移動構(gòu)造函數(shù)和移動賦值操作符中的defaulted
函數(shù)體:在類中指定default
關(guān)鍵字來聲明默認(rèn)的移動構(gòu)造函數(shù)和移動賦值操作符,例如 ClassName(ClassName&&) = default;
和 ClassName& operator=(ClassName&&) = default;
。
默認(rèn)虛函數(shù)中的defaulted
函數(shù)體:在基類的虛函數(shù)聲明中指定default
關(guān)鍵字來聲明默認(rèn)的虛函數(shù),例如 virtual void foo() = default;
。
總的來說,default
關(guān)鍵字的擴展用法提供了更便捷的方式來聲明默認(rèn)的特殊成員函數(shù)和虛函數(shù)。