阅读同事编写的一些代码,我偶然发现了使用构造函数语法来初始化原始类型变量。即如下所示:
#include <iostream>
int main()
{
using namespace std;
// initialized using assignement syntax (copy initialisation)
int titi = 20;
cout << "titi=" << titi << "\n"; // got 20 in titi, it works
// initialized using constructor syntax (direct initialization)
int toto(10);
cout << "toto=" << toto << "\n"; // got 10 in toto, it works
}
我的自然倾向是坚持使用赋值语法,因为它是历史性的,而且很简单,并且存在明显的兼容性问题(构造函数语法不符合有效 C 的条件)。
我仍然想知道这两种语法之间是否还有其他不明显的区别?如果它们实际上是同一个意思?考虑到例如未来的维护/代码演变问题或可读性问题,一种或另一种形式的优缺点是什么?