【发布时间】:2015-12-17 13:34:40
【问题描述】:
我目前正在学习 C++ 课程,并且正在努力解决参考问题。我知道有一些类似的主题,但我找不到答案。 问题是我的教授希望我们在返回对象时使用引用,所以按值返回或使用指针作为返回是没有选择的。 所以我想我必须使用动态分配的对象(返回对本地对象的引用以一团糟......对吗?)
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();
这似乎可行,但有没有办法只用一行?还是应该做不同的事情?
【问题讨论】:
-
它们都不起作用。您的任何一个示例都在调用未定义的行为。
-
您会将其存储在参考中吗?
Complex &two = object.method();,然后是delete &two;。请注意,通过引用删除对象是不寻常的——通常人们使用指针。