我声明了一个大小为 100 的数组,string bin[100];
我希望每个数组都初始化为""
. 如何用一行初始化所有这些?我尝试了类似的东西bin[] = "";
,但它不起作用。任何帮助,将不胜感激。
默认构造函数
RandomString()
{
input = "";
//bin[] = "";
}
我声明了一个大小为 100 的数组,string bin[100];
我希望每个数组都初始化为""
. 如何用一行初始化所有这些?我尝试了类似的东西bin[] = "";
,但它不起作用。任何帮助,将不胜感激。
默认构造函数
RandomString()
{
input = "";
//bin[] = "";
}
你不需要做任何特别的事情,就string bin[100];
可以了。std::string
将为数组的每个元素调用默认构造函数。
如果数组是某个类的成员,则在成员初始化列表中对其进行初始化:
struct SomeClass
{
std::string bin[100];
SomeClass() : bin() // You can initialize arrays with () in the mem-init list
{
}
};
*从技术上讲,即使您不添加bin()
到 mem-init 列表,也会调用默认构造函数,但这是一种很好的做法(因为内置类型将保持未初始化状态)。
在 C++ 中,类的成员通过初始化列表进行初始化。例如,在以下示例中,代码存在差异:
// First example
struct MyClass
{
int i;
SomeClass() : i(1)
{
}
};
// Second example
struct MyClass
{
int i;
SomeClass()
{
i = 1;
}
};
在第一个示例中,i
被初始化为1
在初始化列表中。在第二个示例中1
,分配给i
。您可以将上述代码视为执行以下操作:
int i = 1; // First example
int i; // Second example
i = 1;
对于像这样的内置类型int
,两者之间没有太大区别,但是在某些情况下,上述区别可能非常重要,例如在声明成员时const
:
struct SomeClass
{
const int i;
SomeClass()
{
i = 1; // Error!!
}
};
在上面的示例中,必须在初始化列表中初始化 const 成员。
以您的方式,您刚刚初始化了数组的第一个元素,默认 ctor 初始化为空字符串。您想初始化 100 个元素,只需对每个元素执行相同的操作即可。