13.8練習的答案代碼中有一個地方不太明白:
HasPtr& operator=(const HasPtr &hp) {
std::string *new_ps = new std::string(*hp.ps);
delete ps;
ps = new_ps;
i = hp.i;
return *this;
}
在ps=new_ps;
之前ps指針就已經delete了啊,為什麼之後ps又被賦值了?本人cpp小白。。。。望大牛指教
ps是指針,樓主可能對指針的用法不是很明白,建議先了解指針之後看這段代碼可能會更加明晰。
delete ps; // 表示將ps指向的地址釋放,ps指向的地址被回收了,但是ps變量依然存在
ps = new_ps; // 表示ps和new_ps指向了同一個內存地址