Ada*_*vet 2 c++ pointers smart-pointers c++11
我测试了一些c ++ 14的新功能,我想知道为什么这些指针没有相同的地址
#include <iostream>
#include <memory>
class Test
{
public :
Test(){std::cout << "Constructor" << std::endl;}
Test(int val){value = val;}
~Test(){std::cout << "Destructor" << std::endl;}
private :
unsigned int value;
};
int main(int argc, char *argv[])
{
std::unique_ptr<Test> ptr(new Test(45));
std::cout << &ptr << std::endl;
std::unique_ptr<Test> ptr2 (std::move(ptr));
std::cout << &ptr2 << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Output :
0xffffcbb0
0xffffcba0 //Why it's not the same as previous
Destructor
Run Code Online (Sandbox Code Playgroud)
谢谢你,有一个美好的一天
Dan*_*ani 16
您正在打印unique_ptr变量本身的地址,而不是它们指向的地址.使用该unique_ptr::get()方法而不是&运算符:
std::unique_ptr<Test> ptr(new Test(45));
std::cout << ptr.get() << std::endl;
std::unique_ptr<Test> ptr2 (std::move(ptr));
std::cout << ptr2.get() << std::endl;
Run Code Online (Sandbox Code Playgroud)