我遇到了一个有趣的问题。我在 C++ 中有一个函数,它返回一个充满类的 vector 。返回 vector 后,它会为作为 vector 中元素的每个类调用解构函数。
问题很明显:数据在类指向指针的地方被销毁,当对象被销毁时,指针被释放。我只能假设调用解构函数是因为 vector 在堆栈上,而不是在堆上。
那么问题是:
有没有办法保持从函数返回 vector 而不被破坏?或者我是否必须传递一个指向返回 vector 的指针作为函数的输入?
最佳答案
您可以使用new
在堆上创建任何东西。您不应该从函数中给出对堆栈对象的引用,因为它们会在函数完成后立即被销毁。
如果您希望您的函数按值 返回 vector ,请确保 vector 中的对象实现复制构造函数(也许还有赋值运算符,对此不确定)。有了这个,请不要忘记 Rule of Three .
关于c++ - 从函数返回 vector 而不破坏它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4984816/