man*_*ans 3 c++ initialization stdstring c++11
我有以下代码:
class myclass
{
std::string str;
public:
void setStr(std::string value)
{
str=value;
}
std::string getStr()
{
return str;
}
}
main()
{
myclass ms;
std::cout<<ms.getStr()<<std::endl;
}
Run Code Online (Sandbox Code Playgroud)
当我编译并运行此代码时,会出现o错误,在Windows中,我总是将str作为“”。
这一直有效吗?
我需要上述行为,因为如果用户未调用set,str将始终为空字符串。
我应该在构造函数中初始化str如下:
class myclass
{
std::string str;
public:
myclass():str(""){}
void setStr(std::string value)
{
str=value;
}
std::string getStr()
{
return str;
}
}
Run Code Online (Sandbox Code Playgroud)
我想确保所有平台上的行为都相同,并且还要确保代码尽可能小巧,整洁。
我是否需要初始化std :: string
否。std::string默认构造函数为您初始化一个不错的空字符串。
我想确保所有平台上的行为都相同,并且还要确保代码尽可能小巧,整洁。
然后去除杂物:
struct myclass {
std::string str;
};
Run Code Online (Sandbox Code Playgroud)
虽然基本类型默认情况下不会初始化,但您需要显式初始化它们:
struct myclass {
std::string str;
int i = 1; // <--- initialize to 1.
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
174 次 |
| 最近记录: |