返回与使用参考参数

时间:2012-08-23 01:11:05

标签: c++ return-value ref

这真是让我烦恼,来自C#背景。

有时,我看到这样写的函数:

int computeResult();

这就是我习惯的。但后来我看到它们写得像这样:

void computeResult(int &result);

我发现这很奇怪。如果有的话,第二种方法对第一种方法有什么好处呢?必须有一些东西,因为我一直都在看。

1 个答案:

答案 0 :(得分:17)

此类非const参考参数有两个常见原因:

  • 您可能需要在函数中使用多个“out”参数,并且使用参考参数可以实现此目的。

  • 您的对象复制起来可能很昂贵,因此您传入一个将被改变的引用,而不是返回可能作为返回过程的一部分被复制的对象。昂贵的复制对象可能包括标准容器(如vector)和管理堆内存的对象,其中将发生分配 - 复制 - 释放序列。请注意,编译器在可能的情况下非常擅长优化这些副本,因此这个原因的重要性比以前少。

编辑:我应该澄清,即使在C ++中,您提供的单个内置类型引用参数的具体示例也非常不典型。在这种情况下,返回值几乎总是首选。

相关问题