【发布时间】:2018-11-29 15:48:57
【问题描述】:
我在玩 boost 作用域指针,但我不明白这种行为:
#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
reset函数不应该改变p指向的地址吗? 如果使用范围数组而不是范围指针并打印上面代码中第一个元素指向的地址,就会出现这种情况。
【问题讨论】:
-
谢谢,刚刚试过 p.get() 确实得到了不同的地址。
-
远程相关:请注意
operator&可能会被重载以返回您所期望的(不是),对于这种情况,std::adressof
标签: c++ boost scoped-ptr