【发布时间】:2017-06-27 09:03:54
【问题描述】:
无法理解为什么会失败?
int *p = new int(10);
std::unique_ptr<int> ptr(p);
// Below line gives compilation error.
std::cout << "Value of ptr " << ptr << std::endl;
// Below line works well.
std::cout << "Value pointed ptr " << *ptr << std::endl;
std::cout << "Value of ptr->get() " << ptr.get() << std::endl;
我是这样理解的:
说p的地址是100,新分配的内存地址是200。
p new allocated memory
---------- ---------
200 10
---------- ---------
100 200
ptr
----------
200
----------
300
在上面的描述中,unique_ptr 指向新分配的内存本身,避免了'p'。那么,打印'ptr'不应该给我200吗?
【问题讨论】:
标签: c++ c++11 iostream smart-pointers unique-ptr