构造函数声明符可以用括号括起来。为什么?

时间:2016-11-29 18:25:26

标签: c++

[class.ctor]/1

  

构造函数没有名称。在构造函数的声明中,   declarator是ptr-declarator形式的函数声明符(8.3.5)   (parameter-declaration-clause)exception-specification opt   attribute-specifier-seq opt 其中ptr-declarator   仅由id-expression组成,可选   attribute-specifier-seq和可选的周围括号,和   id-expression具有以下形式之一: ...

是的,这可以编译:

struct S{
    (S)() {}
};

但为什么允许这样做?

1 个答案:

答案 0 :(得分:0)

这是因为构造函数是一个函数,大多数声明都可以用括号括起来(甚至是多个):

http://.../?user=<?php echo urlencode("❤#test#❤");?>

请参阅Why does C++ allow us to surround the variable name in parentheses when declaring a variable?了解为何允许这样做。这些语法可能在定义时扩展到构造函数。