像许多人一样,我对C++0x感到非常兴奋。我尝试在新项目中学习和使用新功能,这样我就可以编写出最好的、最易于维护的代码。
不用说,我喜欢新初始化器背后的想法。所以我正在看它们,这些对我来说很有意义:
T x = { 1, 2, 3 }; // like a struct or native array
T x({1, 2, 3}); // copy construct something like an "object literal" in other languages... cool!
return {1, 2, 3}; // similar to above, but returning it, even cooler!
对我来说没有意义的是:
T x{1, 2, 3};
只是感觉……很奇怪。我不确定人们想使用什么语法来模仿它,它看起来并不“正确”。
这种语法背后的设计/思想是什么?
似乎有所不同的唯一示例是这样的:
std::vector<int> the_vec{4};
这将调用初始化列表构造函数,但为什么不直接写这个:
std::vector<int> the_vec = {4};
做每个人都已经习惯的事情吗?