“MyClass& func1(void)”和“MyClass * func2(void)”之间的区别

时间:2010-10-22 15:20:25

标签: c++

  

可能重复:
  What is the proper way to return an object from a C++ function ?

你好,

我想知道关于返回类型的以下两个函数之间的区别是什么?

  1. MyClass的&安培; func1的(无效)
  2. MyClass * func2(void)
  3. 我一直认为这会是一样的吗?

    海因里希

2 个答案:

答案 0 :(得分:4)

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

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

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

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

(这可能只是总结了其他人写的内容)

答案 1 :(得分:1)

第一个返回对象(或其地址)的引用。另一个返回指针,而不是引用

主要区别:第二个可以返回NULL