C++の基礎 - クラス

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
2022年12月3日 (土) 12:19時点におけるWiki (トーク | 投稿記録)による版 (ページの作成:「== 概要 == <br><br> == 実体化の禁止 == C++11以降では、デフォルトコンストラクタとデストラクタに<code>delete</code>キーワードを指定することにより、実体化を禁止することができる。<br> メンバに<code>delete</code>キーワードを指定する場合は、<code>public</code>に記述することがセオリーである。<br> <syntaxhighlight lang="c++"> // C++11以降 class CSampleClass final { p…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

概要



実体化の禁止

C++11以降では、デフォルトコンストラクタとデストラクタにdeleteキーワードを指定することにより、実体化を禁止することができる。
メンバにdeleteキーワードを指定する場合は、publicに記述することがセオリーである。

 // C++11以降
 
 class CSampleClass final
 {
 public:
    CSampleClass() = delete;
    ~CSampleClass() = delete;
 public:
    static int Add(int x, int y)
    {
       return x + y;
    }
 };


Visual C++では、abstractキーワードが使用できるため、abstract sealedまたはabstract finalを指定することにより、staticクラスを記述することができる。
ただし、その場合は、他のプラットフォームではそのまま移植できないことに注意が必要となる。

また、Visual C++では、コンパイルオプションに/permissive-を付加することにより、独自拡張を無効化することもできる。