我正在玩提升范围的指针,但我不明白这种行为:
#include <iostream>
#include <boost/scoped_ptr.hpp>
int main()
{
boost::scoped_ptr<int> p{new int{1}};
std::cout << &p << '\n';
p.reset(new int {2});
std::cout << &p << '\n';
return 0;
}
我得到以下输出:
0x7fff5fbff650
0x7fff5fbff650
复位函数不应该改变p指向的地址吗?如果使用范围数组而不是范围指针并打印上面代码中第一个元素指向的地址,就会出现这种情况。