【发布时间】:2016-05-28 16:44:15
【问题描述】:
我正在研究智能指针,尤其是scoped_ptr。
我读到了运算符* 和->。
我试图运行这段代码:
int main(){
boost::scoped_ptr<int>number(new int);
*number = 432;
std::cout<<"Value: "<<*number <<std::endl<< " Adress: "<< number <<std::endl;
return 0;
}
结果是:
Value: 432 Adress: 1
这是不正确的。
如何使用-> 运算符来获取正确的地址?
【问题讨论】:
-
你要智能指针的地址,还是int的地址?你现在正在做的是打印智能指针的数值,它似乎是 1(可能是引用计数)。
-
int* p = number.operator -> (); -
对于
scoped_ptr,<<没有过载。相反,它被隐式转换为bool(有这样的转换)并且bool默认打印为0和1。由于指针不为空,它转换为true。
标签: c++ smart-pointers memory-address scoped-ptr