什么是int(a)(1)?这是一个有效的c ++语法吗?

Eig*_*ght 19 c++

#include <iostream>
int main()
{
    ------- some statements ---------

    int(a)(1);

   -------- some other statments .......
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我在C++程序中看到了这个陈述.这不会导致语法错误.

这是什么a?这是有效的C++语法吗?

GMa*_*ckG 28

可以将变量的名称放在括号中:

int i;
int (i); // exact same
Run Code Online (Sandbox Code Playgroud)

所以在你的情况下:

int a(1); // initialized with 1
int (a)(1); // exact same
Run Code Online (Sandbox Code Playgroud)

  • 现在提出一个奖金问题 - 为什么! (7认同)
  • @Martin:类型在某种程度上是可组合的,额外的括号集允许子表达式的分组.该语言可能禁止在不严格要求的情况下使用括号,但他们没有.例如,`int(X)()`声明`X`是*函数*不带参数并返回`int`,现在,如果`X`是`*Y`那么它是指向[.. .],如果`Y`是`Z [10]`它将是一个包含10个函数指针的数组...在很多情况下需要使用括号进行分组,那么为什么禁止在其他情况下进行分组呢?......考虑到在括号组的其他任何地方允许它们. (7认同)