c++切换到通过引用传递参数
C++ switching to passing arguments by reference
我做了一个相当大的程序,我没想到会增长这么多,所以我没有费心通过引用传递函数的参数,所以它们大多是通过值传递的,并且想改变这一点(出于性能原因)在所有函数中通过引用传递。它们有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
的临时或参数,不再是本地需要的
也许你不需要修改所有的代码,只需要修改最常被调用的函数。所以我建议先分析一下你的代码
相关文章:
- 将const引用参数初始化为默认参数会导致悬空引用吗
- 具有常量引用参数的函数模板专用化
- C++:常量引用参数
- 字符串引用参数的效率C++
- 通过非常量引用参数修改常量引用参数
- 如何将指针变量作为引用参数传递?
- C++初始化 std::function 时如何将占位符绑定到引用/引用参数?
- 移动类的成员作为常量引用参数传递
- C++带有适用于左值和右值的引用参数的函数
- constexpr 函数的常量引用参数:gcc/msvc vs clang/icc
- 如何使用类型特征将函数的通用引用参数限制为 r 值引用?
- 委托构造函数和引用参数
- 对 const 引用参数使用默认值会导致崩溃
- 为什么我们不允许将纯引用参数传递给 std::thread,但允许传递原始指针?
- 为什么我需要将默认引用参数定义为 const 以便为其分配一个左值?
- 将非左值作为常量引用参数传递.临时是在本地作用域还是在调用方作用域中创建的?
- 如何强制函数仅接受左值引用参数
- 模板引用参数推断失败C++
- 非类型引用参数可以在运行时修改,这是否意味着模板可以在运行时实例化?
- 将unique_ptr作为引用参数或常量传递unique_ptr引用