我目前正在学习 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/