请考虑下面的代码。我对unique指针的理解是只有一个unique指针可以用来引用一个变量或对象。在我的代码中,我有多个unique_ptr访问同一个变量。
显然这不是正确使用智能指针的方式,因为指针应该从创建时就具有完全所有权。但是,为什么这是有效的而没有编译错误?谢谢。
#include <iostream>
#include <memory>
using namespace std;
int main()
{
int val = 0;
int* valPtr = &val;
unique_ptr <int> uniquePtr1(valPtr);
unique_ptr <int> uniquePtr2(valPtr);
*uniquePtr1 = 10;
*uniquePtr2 = 20;
return 0;
}
/MTd
标志。 - Christian Hackl