gpt4 book ai didi

C++在需要返回时删除用new创建的对象

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

当我需要返回结果时,如何删除我用new分配的空间。我使用它,所以如果我找不到对象,我会返回一个具有虚拟标记值的对象。

ClassObject* ClassObjectTwo::find(string findid) {
ClassObject *sendback;
bool found;

for(vector<ClassObject>::iterator it = data.begin(); it != data.end(); it++) {
if ( it->get_id() == findid) {
found = true;
sendback = &(*it);
}
}

if(!found) {
sendback = new ClassObject;
sendback->set_key(100);
}

return sendback;
}

或者这不是问题,因为它在超出范围时会被销毁。我能想到的唯一其他解决方案是将对象放在构造函数中并通过构造函数删除。我只是不想为一个函数添加变量。

最佳答案

在函数外销毁动态创建的对象是完全没问题的。

但是,在这种情况下,返回 NULL 会更好。

关于C++在需要返回时删除用new创建的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16743730/

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