gpt4 book ai didi

c++ - 有没有办法删除传递给函数 `foo (new Object())` 的对象?

转载 作者:太空宇宙 更新时间:2023-11-04 14:40:49 24 4
gpt4 key购买 nike

我整天都在寻找这个。因此,在 C++ 中,如果您有以下代码:

#include <iostream>                                                                                                       

struct a {
int x, y;
a (int aa = 0, int bb = 0) : x{aa}, y{bb} {
}
};

void printit (a*);
int main (void) {
printit (new a {1,3});
return 0;
}

void printit (a *aa) {
std::cout << aa->x << " - " << aa->y;
}

如果我得到 printit () 函数(意味着我无法访问 printit() 代码)并且 printit() 没有删除对象,有没有办法删除我创建的对象?

printit (new a {1,3}); // <--- this object

为了澄清,我的问题是如何在没有额外变量的情况下执行上述操作,并确保创建的对象已被删除。

最佳答案

您可以向智能指针寻求帮助。例如

printIt(std::make_unique<a>(1,3).get());

printIt(std::unique_ptr<a>(new a{1,3}).get());

否则,您必须将指针保存在命名变量中,稍后删除

关于c++ - 有没有办法删除传递给函数 `foo (new Object())` 的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50997522/

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