声明一个函数 fun 带有一个 double 而且返回一个 int:
1 int fun( double d ); 2 int fun( double (d) ); // 同上,d 的参数左右括号是多余的 3 int fun( double ); // 同上,参数名被省略
声明一个函数 gun 带有一个参数,参数指向一个没有参数、返回 double 的函数指针:
1 int gun( double (*pf)() ); // 带有一个指向函数的指针作为参数 2 int gun( double pf() ); // 同上,pf 其实是一个指针 3 int gun( double () ); // 同上,参数名可以省略
Tip: C++ 里面的一条通用规则—— 几乎任何东西都可能被分析成函数声明
1 class Widge { ... }; 2 Widge w(); // 并没有声明一个叫作 w 的 Widget,声明了一个返回 Widget 对象的函数
用括号包含一个实参声明是不合法的,但用括号包围一个函数调用的观点是合法的,可以帮助我们战胜解析