簡體   English   中英

C ++為什么它不是相同的地址(指針)

[英]C++ Why it's not the same address (pointers)

我測試了一些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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM