A a(B()); //declares a function
虽然这对大多数人来说直观地看起来是一个a
类型对象的声明A
,将一个临时B
对象作为构造函数参数,但实际上它是一个a
返回函数的函数的声明A
,将指针指向返回的函数B
并且它本身不带参数。
A a(); //declares a function
也属于同一类别,因为它不是一个对象,而是声明一个函数。现在,在第一种情况下,这个问题的常用解决方法是在B()
该处添加一组额外的括号/括号,因为编译器会将其解释为对象的声明
A a((B())); //declares an object
但是,在第二种情况下,这样做会导致编译错误
A a(()); //compile error
我的问题是,为什么?
相似问题