【发布时间】:2018-05-17 15:41:03
【问题描述】:
我有这个代码:
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;
}
当我编译并运行这段代码时,出现了 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;
}
}
我想确保所有平台上的行为都相同,并确保代码尽可能小而整洁。
【问题讨论】:
-
需要初始化std::string --> 不需要
-
@liliscent 是行为保证吗?是否调用了字符串的构造函数?什么时候叫他们?
-
@drescherjm 谢谢,现在已修复。
标签: c++ c++11 initialization stdstring