代码之家  ›  专栏  ›  技术社区  ›  Paco G

C++unique\u ptr的行为就像复制值一样

  •  0
  • Paco G  · 技术社区  · 7 年前

    在此代码中:

    using namespace std;
    
    int main() {
        int x = 11;
        int* rawPointer = &x;
        unique_ptr<int> integerPointer = make_unique<int>(x);
        cout << *rawPointer << std::endl;
        x++;
        cout << *rawPointer << std::endl;
    
        return 0;
    }
    

    当我们询问 rawPointer ,输出为:

    11
    12
    

    这是正确的。但当我们要求 integerPointer ,这是一个独特的 pointer ,我们得到输出:

    11
    11
    

    我本以为它的行为就像 rawPointer公司 .为什么?这真的是独一无二的方式吗 pointers 工作

    谢谢

    1 回复  |  直到 7 年前
        1
  •  1
  •   James Adkison    7 年前

    std::unique_ptr reference docs :

    构造类型为T的对象并将其包装在std::unique\u ptr中。

    所以你正在构建一个新的副本,由 unique_ptr 通过路过 x ,而不是管理 十、 按地址。