我声明了一个大小为100 string bin[100];
的数组我希望每个数组都被初始化为""
。如何用一行初始化所有这些?我试过像bin[] = "";
这样的东西,但它不起作用。任何帮助将不胜感激。
默认构造函数
RandomString()
{
input = "";
//bin[] = "";
}
答案 0 :(得分:2)
你不需要做任何特别的事情,只需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成员必须在初始化列表中初始化。
答案 1 :(得分:0)
以你的方式,你刚刚初始化了数组的第一个元素,默认的ctor初始化为null字符串。你想要初始化100个元素,只为每个元素做同样的事情。