c++ - "MyClass& func1(void)"和 "MyClass* func2(void)"之间的区别

标签 c++

<分区>

Possible Duplicate:
What is the proper way to return an object from a C++ function ?

你好,

我想知道以下两个函数在返回类型方面的区别是什么?

  1. MyClass& func1(void)
  2. MyClass* func2(void)

我一直以为这会是一样的?

海因里希

最佳答案

第一个只能返回对单个对象的引用并且不能为空。或者更确切地说,它不应该为空。

第二个可能是返回指向单个对象或对象数组的指针。

在您希望返回不能为空的单个对象的情况下,#1 往往是首选形式。在可以返回 null 的情况下,必须使用 #2。有些 API 根本不返回引用(例如 QT)。

但这只是句法上的差异。这两种类型在编译代码中的处理方式完全相同:将使用指向对象(或数组)的指针。也就是说,严格来说,引用符号 & 没有在普通指针上添加新的语义功能。

(这可能只是别人写的总结)

关于c++ - "MyClass& func1(void)"和 "MyClass* func2(void)"之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3998291/

相关文章:

c++ - 可以根据模板参数有条件地添加 C++ 元组元素类型吗?

c++ - 在 C++ 中使用引用变量的 void 返回类型

c++ - OpenCV:如何能够使用 2 个不同的应用程序从同一台相机捕获帧?

c++ - 将图像放置在较大图像的特定位置

c++ - 赋值运算符和复制构造函数有什么区别?

c++ - 使用 boost::asio 是否有一种可移植的方法来查找空闲端口号

c++ - asp.net mvc(使用HRESULT的C++异常的外部dll:0x8007007E)

c++ - 程序可以使用管道来回通信吗?

java - 我可以在 python 中访问 C++ 或 Java 函数吗

C++ 将指针转换为对函数参数中基类指针的引用