在以下几个方面是否有任何区别:
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发布于 2016-12-19 00:54:08
你的前两个例子没有实际区别。当您想在多个构造函数中使用相同的初始化程序时,类中的初始化器非常有用;当您想在不同的构造函数中使用不同的初始化函数时,构造函数初始化程序列表是强制性的。
当您同时拥有类内初始化项和构造函数成员初始化项时,该构造函数将忽略类内初始化器。仍然只有一个初始化,没有分配。
https://stackoverflow.com/questions/41214052
复制相似问题