我看到一个对象构造函数(例如,对于A类)被称为A()
和A{}
有什么不同?他们似乎都做同样的事情。
答案 0 :(得分:2)
他们似乎都做了同样的事情。
这是因为它们是同一事物的两种替代语法。
有什么区别?
A{}
在C ++ 11之前不存在。A a()
在语法上与函数声明不明确,语言规则表明它是函数声明。 A a{}
解决此限制,因为它不是函数声明的语法。现在,这是A a()
和A a{}
之间的差异以及A a{}
存在的原因,但也不需要不具有A{}
的不一致。除了A{}
之外还有A()
的另一个论点是A { arg1, arg2, ... };
是列表初始化的语法。出于通用编程的目的,还必须(或至少非常有用)支持空参数列表:A{}
。