0
智能指針我創建了一個程序像下面指向新的對象
void Encode(shared_ptr<string>str)
{
shared_ptr<string> n(new string());
//I am creating the string pointed by n here by analyzing the string pointed by str
cout<<endl;
cout<<str.get()<<" Func "<<str.use_count()<<" "<<n.get()<<" "<<n.use_count()<<endl;
str=n;
cout<<str.get()<<" Func "<<str.use_count()<<" "<<n.get()<<" "<<n.use_count()<<endl;
}
int main()
{
string s("aaabbbccd");
shared_ptr<string> str(new string(s));
Print(str);
cout<<endl;
cout<<str.get()<<" Main "<<str.use_count()<<" "<<endl;
Encode(str);
cout<<str.get()<<" Main "<<str.use_count()<<" "<<endl;
cout<<endl;
Print(str);
_getch();
return 0;
}
,因爲我編碼字符串,所以我不想原始字符串我編碼後,我試圖通過寫入行str=n
做它認爲這將使str
指向我可以在我的主程序中使用的新字符串,但它不正確,因爲我只將原始字符串作爲輸出,而不是修改後的字符串。
我甚至使用.get()
函數進行檢查,它似乎只指向原始字符串。
任何人都可以解釋爲什麼它是這樣的,我如何使str
指向新的字符串?
感謝德魯的信息 – bourne 2013-03-04 00:26:44