gpt4 book ai didi

C++ 返回对象的引用

转载 作者:行者123 更新时间:2023-11-30 01:46:44 24 4
gpt4 key购买 nike

我目前正在学习 C++ 类(class),并且正在为引用文献而苦苦挣扎。我知道有一些类似的话题,但我找不到答案。问题是我的教授希望我们在返回对象时使用引用,所以按值返回或使用指针作为返回是没有选择的。所以我想我必须使用动态分配的对象(返回对本地对象的引用以一团糟结束......对吧?)

1. Complex& method() {
2. Complex *object = new Complex();
3. return *object; }

这是我苦苦挣扎的地方,我如何正确地捕获返回?

1. Complex one = object.method();

据我了解,有了这个我只会得到一个拷贝和一个内存泄漏那么我如何用指针捕捉它呢?

1. Complex *two = new Complex();
2. delete two;
3. *two = object.method();

这似乎行得通,但是有没有一种方法可以只用一行呢?还是应该采取不同的方式?

最佳答案

一个想法是将返回的对象存储在您的对象中:

class Obj {
public:
Complex &method() { c.data = 10; return c; }
private:
Complex c;
};

这样就不会返回任何局部变量或堆分配。

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

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