'const&'是什么用C ++表示?

时间:2013-10-16 23:23:29

标签: c++ operators const

为此道歉,我是一名学生,正在努力学习C ++,我只是觉得如果我问这个问题并且对此有很多正确的看法会更好,所以我很抱歉提出愚蠢的问题。我只是认为最好不要不知道。

我理解地址运算符&const关键字的含义。但是,当我在某处阅读示例代码时,我看到const&使用过,只是想要暗示这一点?

它用于代替函数原型中的参数,例如:

void function (type_Name const&);

如果只使用其中一个,我会理解,但我在这里有点困惑,所以一些专业见解会很棒。

2 个答案:

答案 0 :(得分:20)

C ++中的类型从右到左阅读。这是不方便的,我们喜欢阅读单个单词的相反方向。但是,在尝试确定适用于constvolatile的限定符时,将限定符始终放在右侧会使查看类型变得更容易。例如:

  • int* const是指向[非 - const] const
  • int指针
  • int const*是指向const
  • 的[非 - const int]指针
  • int const* const是指向const
  • const int指针

然而,对于历史上任何不幸的事故,我们认为允许将顶级const写在左侧是合理的,即const intint const绝对是当量。当然,尽管const明显正确放置在类型的右侧,使其易于阅读类型以及具有一致的位置,但许多人认为顶级const应该写在左边。

答案 1 :(得分:8)

在此上下文中,&不是运营商地址。

void function (type_Name const&);

相当于:

void function (const type_Name &);

这只是const引用参数的函数原型。你应该自己研究这类话题,最好是从一本好书中学习。但是,如果您正在寻找其他材料,这些问题也可能对您有所帮助:
What are the differences between a pointer variable and a reference variable in C++?
Pointer vs. ReferenceWhen to use references vs. pointersPass by Reference / Value in C++