Fro*_*art 5 c++ arrays class initialization-list
可以像这样使用初始化吗?
class Foo
{
public:
Foo() : str("str") {}
char str[4];
};
Run Code Online (Sandbox Code Playgroud)
还有这个?
int main()
{
char str[4]("str");
}
Run Code Online (Sandbox Code Playgroud)
两者都给我gcc 4.7.2中的错误:
error:用作初始化程序的数组
Comeau编译两者.
在 C++03 中,不能像您提到的那样初始化非静态成员数组。在 g++ 中,你可以有一个对initializer list的扩展,但这是 C++11 的特性。
函数中的局部变量可以这样初始化:
char str[] = "str"; // (1)
char str[] = {'s','t','r',0}; // (2)
Run Code Online (Sandbox Code Playgroud)
虽然您可以将维度称为4,但最好不要提及以避免意外数组越界。
我建议std::string在这两种情况下都使用。