gpt4 book ai didi

c++ - 重定向 unique_ptr 时会发生什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:22:29 24 4
gpt4 key购买 nike

我知道 unique_ptr 是某个对象的单一所有者,当它超出范围时它会释放该对象。我不明白的是以下情况:

unique_ptr<int> p(new int(1));
p = unique_ptr<int>(new int(2));

如果 p 被重定向到另一个内存位置 new int(2),第一个对象 new int(1) 会发生什么(因为p 只能拥有其中之一)?

最佳答案

unique_ptrunique_ptr 被销毁或重新安置 时销毁它拥有的对象。例如:

#include <iostream>
#include <memory>
using namespace std;

struct T {
T(int x) : x(x) {
cout << "T(" << x << ")\n";
}
~T() {
cout << "~T(" << x << ")\n";
}
int x;
};

int main() {
unique_ptr<T> p(new T(1));
p = unique_ptr<T>(new T(2));
}

这将打印:

  • T(1) 当创建第一个对象时。
  • T(2) 当创建第二个对象时。
  • ~T(1) 当第一个对象被 p 的赋值运算符释放时。
  • ~T(2) 当第二个对象被 p 的析构函数释放时。

关于c++ - 重定向 unique_ptr 时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35856722/

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