12.1/1. 构造函数没有名字。使用一种特殊的声明符号语法来声明或定义构造函数,其包括一个可选的函数说明符序列(7.1.2)、紧随其后的构造函数所在的类名称和一个参数列表。在这样的声明中,对于构造函数类名称周围的可选括号将被忽略。
读取上述文本,我想知道下面示例中的构造函数名称周围被忽略的圆括号是什么?
class MyClass
{
MyClass();
};
MyClass::MyClass() {
}
12.1/1. 构造函数没有名字。使用一种特殊的声明符号语法来声明或定义构造函数,其包括一个可选的函数说明符序列(7.1.2)、紧随其后的构造函数所在的类名称和一个参数列表。在这样的声明中,对于构造函数类名称周围的可选括号将被忽略。
读取上述文本,我想知道下面示例中的构造函数名称周围被忽略的圆括号是什么?
class MyClass
{
MyClass();
};
MyClass::MyClass() {
}
您的代码片段中没有可选括号。以下示例在构造函数类名周围使用了可选括号,但这些括号会被忽略:
class MyClass
{
(MyClass)();
};
MyClass::MyClass() { }
MyClass::(MyClass)() { }
。 - Aaron McDaidint(i);
而不是int i;
吗? ;) - fredoverflowint(i);
是一个表达式,它构造了一个 int,并用i
初始化,就像int j = int(i);
一样。在 C++ 中有一些有趣的“模棱两可”的解析。 - Aaron McDaid(MyClass)();
不是一个声明,而是一个表达式。因此,12.1/1 中引用的部分不适用于此示例。有关正确示例,请参见 http://ideone.com/IUx47。 - MSaltersMyClass
替换成了X
。 - James McNellis