2012-01-04 11 views
4

12.1/1。コンストラクターには名前はありません。オプション指定の関数指定子(7.1.2)の後に続く のコンストラクタのクラス名に続けてパラメータリストを使用する特別な宣言子構文を使用して、 がコンストラクタを宣言または定義します。このような宣言では、オプションの コンストラクタークラス名のまわりのかっこは無視されます。コンストラクタ構文の前後の括弧

次の例では、無視されるコンストラクタ名の前後の括弧は何ですか?

class MyClass 
{ 
    MyClass(); 
}; 

MyClass::MyClass() { 
} 

答えて

6

コードスニペットにはオプションのかっこはありません。次の例では、コンストラクタクラス名周りオプションの括弧を持っており、これらの括弧は無視されます。

class MyClass 
{ 
    (MyClass)(); 
}; 

MyClass::MyClass() { } 
+2

任意のアイデアは、なぜそれが許可されていますか?ところで、私たちは 'MyClass ::(MyClass)(){}'を実行できないようです。 –

+0

'(MyClass :: MyClass)()'が機能するのだろうかと思います。 –

+2

@AaronMcDaid:おそらくCの宣言文の構文です。 'int i;'の代わりに 'int(i);'と言うことができますか? ;) – fredoverflow

関連する問題