我想在C++ 11中創建一個「靜態類」,即只有靜態方法並且不可能實例化或繼承的類。 想出了以下解決方案:通過「刪除」複製構造函數來阻止C++ 11類的實例化
class Foo final {
public:
static void methodA(...);
static int methodB(...);
Foo(const Foo&) = delete;
};
這樣編譯器創建既不是默認的也不是拷貝構造函數。 Visual Studio的IntelliSense也證實了這一點,因爲它在輸入Foo(
時不提供任何構造函數自動完成。
我想知道這個解決方案是否以任何方式比使默認構造函數私有的「常見」方法更可取。有沒有優點/缺點?
爲什麼不使用名稱空間呢? – jamesdlin
是的,如果你沒有使用過類功能,那麼你不會創建一個類。你正在創建一個名字空間。 – tadman
使構造函數保持私有狀態是我們所能做的,沒有delete關鍵字。效果是相同的,並且不生成代碼。如果僅僅因爲它更具可讀性,我會使用新的語法。 –