c++切换到通过引用传递参数

C++ switching to passing arguments by reference

本文关键字:引用 参数 c++      更新时间:2023-10-16

我做了一个相当大的程序,我没想到会增长这么多,所以我没有费心通过引用传递函数的参数,所以它们大多是通过值传递的,并且想改变这一点(出于性能原因)在所有函数中通过引用传递。它们有1000多个。你觉得我该怎么做?(手册是不可能的)我可以做一个小的补丁程序,在我的代码周围放置'&',但是有没有一种方法可以告诉编译器在默认情况下每次都通过引用传递它们?我用的是Visual Studio 2012

您必须手动修复它,没有编译器会为您做这件事。当改变ie时。void foo(std::string)void foo(std::string& str),你必须做出决定,如果这是正确的。如果foo可能会修改str,你不想改变你的程序行为。事实上,如果你选择搬到constconste会更安全。-那是:void foo(const std::string& str) .

你也可以考虑在某些地方使用move语义而不是转换为引用。您必须通过添加move构造函数和赋值操作符来修改类/结构。正如你在下面的链接中看到的,移动语义在VS2012中是可用的。

https://msdn.microsoft.com/en-us/library/dd293665 (v = vs.110) . aspx

但是它只会在特定的情况下帮助你,当你调用foo的临时或参数,不再是本地需要的

也许你不需要修改所有的代码,只需要修改最常被调用的函数。所以我建议先分析一下你的代码