gpt4 book ai didi

C++返回对动态分配对象的引用

转载 作者:行者123 更新时间:2023-11-30 03:21:29 25 4
gpt4 key购买 nike

在 C++ 中,我可以通过引用返回对象 unit 而不是返回指针吗?

最佳答案

你可以,但你不应该。如果您返回对该对象的引用,您将失去它是一个指针,并且需要有人对其调用 delete。如果 mv::CompilationUnit 是可复制/可移动的,那么我建议您将函数更改为

mv::CompilationUnit getCompilationUnit()
{

auto unit = mv::CompilationUnit();
unit.loadTargetDescriptor(mv::Target::ma2480);
return unit;
}

现在您只需在调用站点中获取对象,而不必担心任何清理工作。如果你不能按值返回,那么你应该使用像 std::unique_ptr 这样的智能指针,这样你就可以获得自动内存管理:

std::unique_ptr<mv::CompilationUnit> getCompilationUnit()
{

auto unit = make_unique<mv::CompilationUnit>();
unit->loadTargetDescriptor(mv::Target::ma2480);
return unit;
}

现在您拥有指针的所有权,当指针超出调用站点的范围时,资源将被正确清理。

关于C++返回对动态分配对象的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52060748/

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