Mos*_*vah 0 c++ memory-management
我有以下课程:
class StringHolder
{
public:
StringHolder(std::string& str)
{
m_str = &str;
}
private:
std::string* m_str;
};
Run Code Online (Sandbox Code Playgroud)
并拥有以下字符串object(str),大小为1,024KB:
char c = 'a';
unsigned long long limit = 1024 * 1024;
std::stringstream stream;
for(int i = 0; i < limit; i++)
{
stream << c;
}
std::string str = stream.str();
Run Code Online (Sandbox Code Playgroud)
每当我用字符串初始化StringHolder类时,它都不会复制该字符串.那是因为我使用了引用和指针,但我不确定我是否正确使用它们:
问题:我是否正确使用了引用和指针?
正确的实现应该是这样的
class StringHolder
{
public:
StringHolder(const std::string& str) //note const
: m_str(str){} //use initialization list
private:
std::string m_str; //no need to make it a pointer
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
159 次 |
| 最近记录: |