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