这真的让我很烦,来自 C# 背景。
有时,我会看到这样写的函数:
int computeResult();
这是我习惯的。但后来我看到它们是这样写的:
void computeResult(int &result);
我觉得这很奇怪。如果有的话,第二种方法比第一种方法有什么好处?一定有什么,因为我经常看到。
这真的让我很烦,来自 C# 背景。
有时,我会看到这样写的函数:
int computeResult();
这是我习惯的。但后来我看到它们是这样写的:
void computeResult(int &result);
我觉得这很奇怪。如果有的话,第二种方法比第一种方法有什么好处?一定有什么,因为我经常看到。
此类非常量引用参数有两个常见原因:
您可能需要在一个函数中使用多个“out”参数,并且使用引用参数可以做到这一点。
您的对象复制起来可能很昂贵,因此您传入一个将被变异的引用,而不是返回一个可能会作为返回过程的一部分被复制的对象。昂贵的复制对象可能包括标准容器(如vector
)和管理堆内存的对象,其中会发生分配-复制-解除分配序列。请注意,编译器在可能的情况下非常擅长优化这些副本,因此这个原因的导入量比以前少了。
编辑:我应该澄清,即使在 C++ 中,您提供的带有单个内置类型引用参数的特定示例也非常不典型。在这种情况下,返回值几乎总是首选。