<分区>
Possible Duplicate:
What is the proper way to return an object from a C++ function ?
你好,
我想知道以下两个函数在返回类型方面的区别是什么?
- MyClass& func1(void)
- MyClass* func2(void)
我一直以为这会是一样的?
海因里希
标签 c++
<分区>
Possible Duplicate:
What is the proper way to return an object from a C++ function ?
你好,
我想知道以下两个函数在返回类型方面的区别是什么?
我一直以为这会是一样的?
海因里希
最佳答案
第一个只能返回对单个对象的引用并且不能为空。或者更确切地说,它不应该为空。
第二个可能是返回指向单个对象或对象数组的指针。
在您希望返回不能为空的单个对象的情况下,#1 往往是首选形式。在可以返回 null 的情况下,必须使用 #2。有些 API 根本不返回引用(例如 QT)。
但这只是句法上的差异。这两种类型在编译代码中的处理方式完全相同:将使用指向对象(或数组)的指针。也就是说,严格来说,引用符号 & 没有在普通指针上添加新的语义功能。
(这可能只是别人写的总结)
关于c++ - "MyClass& func1(void)"和 "MyClass* func2(void)"之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3998291/