对于函数声明 int fun( int param() ) 你能看得懂吗?
再省略形参名后为 int fun( int() ) 你能看得懂吗?
把类型int换成类型X后为 X fun( X() ) 你就看不懂了?作者: www1862 时间: 2015-03-04 12:25
楼主的意思是 X x();//生成了一个名为x的X对象。
X x( X() );//这里的X()楼主认为是一个无名对象。然后用这个无名对象用拷贝构造的方式生成一个名为x的X对象。作者: bruceteen 时间: 2015-03-04 12:43 回复 5# www1862
X x();//生成了一个名为x的X对象。
------ 不是吧,这里同样是函数声明,x同样只是个函数名作者: windoze 时间: 2015-03-04 14:43
lz一共提了两个问题
1. X x(X())被当作声明这是没有办法的事,C++语法在这种地方上存在二义性,X x(X()),你可以解释成一个叫x的函数原型,它返回X类型,接受一个“X()”,这东西其实是一个函数类型,没有参数,返回X。
编译器处理这类东西的原则大致是,如果这个东西可以被解释成声明,那它就是声明,所以它就变成声明了。