我有一个带有默认构造函数的类A
和一个带有构造函数的类B
,该构造函数将类A
的对象作为唯一参数。
作为创建类B
对象的一种自然方式,我会考虑
B b(A());
但编译器会将此解释为函数声明。
我知道
B b((A()));
或
B b {A()};
是替代品。但我的问题是:如何将第一个版本解释为函数声明?从我的观点来看,它看起来并不像。
答案 0 :(得分:3)
如何将第一个版本解释为函数声明?
这只是一种语言规则:在C ++ 可以解释的所有内容作为声明 将 被解释就是这样。
以下代码:
MIN(ID)
可以被解释为名称为B b(A());
的函数的声明,其中:
返回b
类型的对象。
将(指向a)指针函数作为参数(未提供参数的名称),返回类型为B
的对象。
因此将解释为声明,因为可以被解释为此声明。