【发布时间】:2013-10-24 13:28:46
【问题描述】:
如何在 C++ 中使用构造函数的初始化列表来初始化(字符串)数组或向量?
请考虑这个例子,我想用给构造函数的参数初始化一个字符串数组:
#include <string>
#include <vector>
class Myclass{
private:
std::string commands[2];
// std::vector<std::string> commands(2); respectively
public:
MyClass( std::string command1, std::string command2) : commands( ??? )
{/* */}
}
int main(){
MyClass myclass("foo", "bar");
return 0;
}
除此之外,在创建对象时建议使用两种类型(数组与向量)中的哪一种来保存两个字符串,为什么?
【问题讨论】:
-
像往常一样使用大括号。
-
@chris: 如
Myclass m = {"hello", "world"};或Myclass(const std::string& c1, const std::string& c2) : commands{c1, c2}{}? -
@thokra,其中一个不会初始化成员,而另一个在 Vaughn 的回答中很好地显示。
-
@chris:是的,这就是我的意思。 ;)
标签: c++ arrays vector constructor initialization