调用c ++构造函数的不同方法

时间:2017-08-31 10:39:33

标签: c++ constructor

我看到一个对象构造函数(例如,对于A类)被称为A()A{} 有什么不同?他们似乎都做同样的事情。

1 个答案:

答案 0 :(得分:2)

  他们似乎都做了同样的事情。

这是因为它们是同一事物的两种替代语法。

  

有什么区别?

  • A{}在C ++ 11之前不存在。
  • 在变量声明中,A a()在语法上与函数声明不明确,语言规则表明它是函数声明。 A a{}解决此限制,因为它不是函数声明的语法。现在,这是A a()A a{}之间的差异以及A a{}存在的原因,但也不需要不具有A{}的不一致。

除了A{}之外还有A()的另一个论点是A { arg1, arg2, ... };是列表初始化的语法。出于通用编程的目的,还必须(或至少非常有用)支持空参数列表:A{}