【问题标题】:What is the rationale for passing reference by const? [duplicate]通过 const 传递引用的理由是什么? [复制]
【发布时间】:2019-04-02 07:47:36
【问题描述】:

也许这个问题以前有人问过,但我就是不知道应该怎么问这个问题

我有以下代码。我不知道将参数作为 const 修饰符传递然后传递给内部构造函数的基本原理是什么。

bool somefunction(const cv::Vec4i& l1_c, const cv::Vec4i& l2_c)
{
   cv::Vec4i l1(l1_c), l2(l2_c);    // why code it in such a manner? 
                                    // what the advantages?
   ...... other codes but l1 and l2 
          is used as values ........
 }

如下使用 cv::Vec4i& l1c 是不是更简单

bool somefunction(cv::Vec4i& l1_c, cv::Vec4i& l2_c)
{

      ...... other codes and l1_c and l2_c 
      is used as values .........
 }

问候

【问题讨论】:

  • 您不希望在函数内部修改参数吗?
  • 我建议阅读 Scott Meyer 的 Effective C++ 中的第 3 条(“尽可能使用 const”)。
  • 可行的替代方案是bool somefunction(cv::Vec4i l1_c, cv::Vec4i l2_c),因为您无论如何都要复制。
  • 感谢您的回答/评论。只是为了让问题更清楚.. 变量没有被更改,但它的值正在被使用。

标签: c++


【解决方案1】:

这两者之间有一个根本的区别,即您不能更改常量版本。此外,您可以将临时变量传递给常量版本,但不能传递给非常量版本。

【讨论】:

    猜你喜欢
    • 2015-03-24
    • 2013-05-22
    • 2020-01-23
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多