请参见下面的示例,我使用了一个唯一指针和一个指向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