63,594
社区成员




关于智能指针我有一个问题:
都知道unique_ptr创建的智能指针,所指的堆空间是智能指针独有的,其他指针不能指向该空间,例如:
std::unique_ptr<int> a(new int);
int *b = a;//这样编译会报错
但是使用reset的时候:
std::unique_ptr<int> a(new int);
int *b = new int;
a.reset(b);//这个操作就把a的指向改为了指向b的空间,此时a,b同时指向同一空间。
那么问题来了:
为什么 int *b = a;//这样编译会报错 这个a和b指向同一空间会报错,而a.reset(b);这样就可以指向同一空间呢?
重载了类型转换,不允许从 std::unique_ptr 转换为 T*