gpt4 book ai didi

c++ - 从函数返回 vector 而不破坏它

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:35:58 24 4
gpt4 key购买 nike

我遇到了一个有趣的问题。我在 C++ 中有一个函数,它返回一个充满类的 vector 。返回 vector 后,它会为作为 vector 中元素的每个类调用解构函数。

问题很明显:数据在类指向指针的地方被销毁,当对象被销毁时,指针被释放。我只能假设调用解构函数是因为 vector 在堆栈上,而不是在堆上。

那么问题是:

有没有办法保持从函数返回 vector 而不被破坏?或者我是否必须传递一个指向返回 vector 的指针作为函数的输入?

最佳答案

您可以使用new 在堆上创建任何东西。您不应该从函数中给出对堆栈对象的引用,因为它们会在函数完成后立即被销毁。

如果您希望您的函数按值 返回 vector ,请确保 vector 中的对象实现复制构造函数(也许还有赋值运算符,对此不确定)。有了这个,请不要忘记 Rule of Three .

关于c++ - 从函数返回 vector 而不破坏它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4984816/

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