【发布时间】:2017-05-04 00:01:13
【问题描述】:
两者有什么区别:
class A {
std::vector<int> vec {1, 2, 3};
public:
// more stuff...
};
A a; // implicit default constructor
class B {
std::vector<int> vec;
public:
B() : vec {1, 2, 3} {}
// more stuff...
}
B b; // default constructor
在 C++14 中哪个更快/更惯用/正确?
在我的班级中,我有 3 个成员:在班级内初始化的 static const、初始化为 true 的布尔值和未初始化的 std::vector。
我的两个构造函数初始化std::vector,并在必要时将布尔值更改为false。我希望默认构造函数用 0 初始化 std::vector?上面哪个选项更正确?
如果我初始化std::vector 成员,如果我这样做会发生什么?
PS:我的班级不是 POD。
class B {
std::vector<int> vec {1, 2, 3}; // already initialized vector
public:
B(std::vector<int> const & data)
: vec {data} // would it still be initialization or copy-assignment?
{}
}
B b; //default constructor
【问题讨论】:
标签: c++11 vector initialization