2012-01-04 69 views
4

12.1/1。构造函数没有名字。使用可选的函数说明符序列(7.1.2),然后是 构造函数的类名称后跟参数列表的特殊声明语法用于声明或定义构造函数 。在这样的声明中,忽略构造函数类名周围的可选 括号。围绕构造函数语法的括号

阅读该文本,我想知道什么是在下面的例子中被忽略的构造函数名称括号?

class MyClass 
{ 
    MyClass(); 
}; 

MyClass::MyClass() { 
} 

回答

6

在代码片段中没有可选的括号。下面的例子有环绕构造的类名可选圆括号,而这些括号被忽略:

class MyClass 
{ 
    (MyClass)(); 
}; 

MyClass::MyClass() { } 
+2

任何想法,为什么被允许?顺便说一句,看来我们不能'MyClass :: :(MyClass)(){}' – 2012-01-04 23:25:24

+0

我不知道'(MyClass :: MyClass)()'是否工作。 – 2012-01-04 23:29:59

+2

@AaronMcDaid:可能是C语言的语法。你知道你可以说'int(i)'而不是'int i'吗? ;) – fredoverflow 2012-01-04 23:50:52