請參見下面的示例,我使用了一個唯一指針和一個指向a
的原始指針,我的問題是,爲什麼原始指針可以工作,但不是唯一指針?如果我想通過使用unique_ptr
或shared_ptr
將字符串a
修改爲參考,我該怎麼辦?爲什麼取消引用unique_ptr不會修改原始對象
實施例的程序:
#include <iostream>
#include <string>
#include <memory>
int main()
{
using namespace std;
string a = "aaa";
auto ptr = std::make_unique<string>(a);
auto ptr2 = &a;
cout << "before, a: " << a << endl;
*ptr += "bbb";
cout << "After, a: " << a << endl;
*ptr2 += "ccc";
cout << "after 2, a: " << a << endl;
}
輸出:
before, a: aaa
After, a: aaa
after 2, a: aaaccc