在构造函数参数中调用默认构造函数

时间:2018-01-18 18:45:50

标签: c++

我有一个带有默认构造函数的类A和一个带有构造函数的类B,该构造函数将类A的对象作为唯一参数。

作为创建类B对象的一种自然方式,我会考虑

B b(A());

但编译器会将此解释为函数声明。

我知道

B b((A()));

B b {A()};

是替代品。但我的问题是:如何将第一个版本解释为函数声明?从我的观点来看,它看起来并不像。

1 个答案:

答案 0 :(得分:3)

  

如何将第一个版本解释为函数声明?

这只是一种语言规则:在C ++ 可以解释的所有内容作为声明 被解释就是这样。

以下代码:

MIN(ID)

可以被解释为名称为B b(A()); 的函数的声明,其中:

  • 返回b类型的对象。

  • 将(指向a)指针函数作为参数(未提供参数的名称),返回类型为B的对象。

因此解释为声明,因为可以被解释为此声明。