【发布时间】:2013-05-24 04:35:12
【问题描述】:
我对智能指针有点困惑。在下面的代码中,&运算符应该返回智能指针分配的地址还是它所控制的指针的地址?
main() {
std::shared_ptr<int> i = std::shared_ptr<int>(new int(1));
std::shared_ptr<int> j = i;
printf("(%p, %p)\n", &i, &j);
}
运行代码,我得到了不同的地址。如果我使用原始指针运行等效代码,我会得到相同的地址:
main() {
int e = 1;
int *k = &e;
int *l = k;
printf("(%p, %p)\n",k,l);
}
【问题讨论】:
-
使用 i.get() 和 j.get() 而不是 &i 和 &j 来获取智能指针持有的指针。
-
是的,现在我明白了。谢谢你。想要发布答案?
-
@Laserallan:这就是答案……你能把它作为答案发布吗?
标签: c++ pointers smart-pointers