【问题标题】:C++, which parameter style is better, by copy or by const reference? [duplicate]C++,哪种参数样式更好,通过复制还是通过 const 引用? [复制]
【发布时间】:2013-12-01 10:45:25
【问题描述】:

我想知道在我的 C++ 库中使用什么样式来管理仅限输入的函数参数的最佳样式:

void f(int a)
{
   // ...
}
void f(const int& a)
{
   // ...
}

我知道当我想传递类或结构的参数时应该使用第二个,但是小值呢?

【问题讨论】:

  • 如果参数在不同的线程中发生变化,两种形式之间存在语义差异。
  • @KerrekSB:- 是的,在我输入它的那一刻我就想到了这就是我删除评论的原因!
  • 这个问题已经有人问过了,看看:stackoverflow.com/questions/3009543/…
  • 您可能还对this answer中提出的经验法则感兴趣

标签: c++ parameters reference copy constants


【解决方案1】:

当您对复制成本较低的结构使用按值传递时,编译器可能会假设对象没有别名,即它们不是相同的对象,这还有一个额外的好处。但是,当您使用传递引用时,编译器不能始终假设。

您可能需要检查 Want Speed? Pass by Value.How to pass objects to functions in C++?

【讨论】:

    【解决方案2】:

    语义优先。

    如果您需要修改该值,包括从中窃取,或者需要该值的快照,则制作它的副本。

    在任何其他情况下,使用const& 就可以了。

    至于优化?先测量。

    【讨论】:

      【解决方案3】:

      如果值较小,则取决于个人喜好。重要的是要统一你的参数样式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-06
        • 2016-06-11
        • 2011-06-20
        • 1970-01-01
        • 2014-05-28
        • 2018-02-11
        • 2010-10-13
        • 1970-01-01
        相关资源
        最近更新 更多