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

时间:2015-08-14 11:00:44

标签: c++ visual-studio

我做了一个相当大的程序,我没想到会增长太多,所以我没有费心去通过引用传递函数的参数,所以它们大多是通过值传递的,并且想要改变这个(出于性能原因)除少数几个函数之外的所有函数都通过引用传递。其中有1000多个。你建议我用什么方式做这个?(手册是不可能的) 我可以制作一个可以放置'&'围绕我的代码,但有没有办法告诉编译器每次都通过引用传递它们,默认情况下?我使用的是Visual Studio 2012。

1 个答案:

答案 0 :(得分:3)

您必须手动修复它,没有编译器会为您执行此操作。当改变即。 void foo(std::string)void foo(std::string& str),你必须做出决定,如果这是正确的 - 即。如果foo可能会修改str,则您不想更改您的程序行为。实际上,如果你选择转向const& - 多数民众赞成:void foo(const std::string& str)

您可能还会考虑在某些地方使用移动语义而不是转换为引用。您必须通过添加移动构造函数和赋值运算符来修改类/结构。正如您在下面的链接中看到的那样,VS2012中提供了移动语义。

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

但只有在特定情况下,当您使用不再需要的临时或参数调用foo时,它才会对您有所帮助。

可能你不需要修复所有代码,只需要修复最常用的函数。所以我建议先对你的代码进行分析。