gpt4 book ai didi

C++ 为什么它不是同一个地址(指针)

转载 作者:太空狗 更新时间:2023-10-29 23:25:21 26 4
gpt4 key购买 nike

我测试了一些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;
}


Output : 
0xffffcbb0
0xffffcba0 //Why it's not the same as previous
Destructor

谢谢 :) 祝你有美好的一天

最佳答案

您正在打印出 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;

关于C++ 为什么它不是同一个地址(指针),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38444723/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com