围绕构造函数语法的括号

use*_*635 4 c++ constructor

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

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

class MyClass
{
    MyClass();
};

MyClass::MyClass() {
}
Run Code Online (Sandbox Code Playgroud)

Jam*_*lis 6

您的代码段中没有可选的括号.以下示例在构造函数类名称周围可选括号,并忽略这些括号:

class MyClass
{
    (MyClass)();
};

MyClass::MyClass() { }
Run Code Online (Sandbox Code Playgroud)

  • 知道为什么允许这样做吗?顺便说一句,似乎我们不能做`MyClass ::(MyClass)(){}` (2认同)
  • @AaronMcDaid:可能是C语言的语法.你知道吗,你可以说`int(i);`而不是`int i;` ;) (2认同)