#include<string>
class HasPtr {
public:
HasPtr(const std::string &s = std::string()) :
ps(new std::string(s)), i(0) {}
HasPtr(const HasPtr &orig) :ps(new std::string(*orig.ps)), i(orig.i) {}
HasPtr &operator=(const HasPtr &rhs) {
*ps = *rhs.ps;
i = rhs.i;
return *this;
}
private:
std::string *ps;
int i;
};
当我将其数据成员ps指向大字符串的HasPtr分配给另一个时,
我是否有可能导致内存损坏?例如:
HasPtr a;
HasPtr b(string("123456789...123456789"));
a=b;
最佳答案
按值保存std::string
。除了是字符串抽象之外,它还是资源管理类,因此应按原样使用它。如果这样做,您的课程将符合0/3/5的规则,而无需您付出任何额外的努力。
关于c++ - 此拷贝分配操作安全吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40836721/