gpt4 book ai didi

c++ - 重新分配 "auto_ptr"和管理内存

转载 作者:行者123 更新时间:2023-11-30 01:32:59 25 4
gpt4 key购买 nike

我有这样的情况:

class MyClass
{
private:
std::auto_ptr<MyOtherClass> obj;

public:
MyClass()
{
obj = auto_ptr<MyOtherClass>(new MyOtherClass());
}

void reassignMyOtherClass()
{
// ... do funny stuff
MyOtherClass new_other_class = new MyOtherClass();
// Here, I want to:
// 1) Delete the pointer object inside 'obj'
// 2) Re-assign the pointer object of 'obj' to 'new_other_class'
// so that 'obj' now manages 'new_other_class' instead of the
// object that just got deleted manually
}
};

有办法实现吗?下面的代码会做我想做的事吗?

void MyClass::reassignMyOtherClass()
{
// ... still, do more funny stuff (flashback humor :-)
MyOtherClass new_other_class = new MyOtherClass();
obj.reset(new_other_class);
}

new_other_class 的内存是否会在 MyClass 的默认析构函数中取消分配?

最佳答案

是的,会的。你可以使用

obj.reset( new MyOtherClass() );

我最好使用这样的构造函数

 MyClass():
obj( new MyOtherClass() )
{
}

关于c++ - 重新分配 "auto_ptr"和管理内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/690356/

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