如何正确使用C++中的对象

问题描述 投票:0回答:1

终于学会了C++的大部分基础知识之后,仍然缺少拼图部分。我们举个例子:

class MyClass {
/// ...
};

void f1(MyClass& cl) {
}

void main() {
  MyClass cl; // Calls the constructor
  MyClass *ptr = nullptr; // Declares a pointer.
  ptr = &cl;  // Now points to the object above.
  f1(cl); // working by mentioning the object
  f1(*tr);  // working by dereferencing.
}

现在,我不明白当函数返回简单的类名时该怎么做(不是像

MyClass *
这样的指针,也不是像
MyClass&
这样的引用:

MyClass f3() {
  MyClass c = nullptr; // is this even allowed?
  // .... Within the function, c gets assigned to some other already existing object.
  return c;
}

// caller:
MyClass c = f3();
MyClass *ptr = ?????; // <--- what comes here to invoke f3()?
MyClass& ref = ?????; // <--- what comes here to invoke f3()?

那么,我的问题是,如何将返回值类型为

MyClass
(不是指针,不是引用)的函数的返回值分配给调用者中的指针或引用?
MyClass obj = nullptr
是否有意义,或者我应该更喜欢修改函数以返回
MyClass *

c++ return-value
1个回答
0
投票
MyClass f3() {
  MyClass c = nullptr; // is this even allowed?
  // .... Within the function, c gets assigned to some other already existing object.
  return c;
}

在上面的例子中,它没有任何意义,因为

c
不是一个指针。

后来

c
是按值返回的,所以就做了一个copy。这很容易,因为
MyClass
是一个简单的类,但是如果该类具有动态分配的内存,您将需要阅读三/五/零规则。

© www.soinside.com 2019 - 2024. All rights reserved.