21

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

我理解地址运算符&const关键字分别是什么意思。但是当我在某处阅读我看到的示例代码时,我const&只是想知道这意味着什么?

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

void function (type_Name const&);

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

4

2 回答 2

33

C++ 中的类型从右到左读取。这与我们喜欢阅读单个单词的方向相反,很不方便。然而,当试图决定喜欢什么限定词constvolatile适用于什么限定词时,总是把限定词放在右边可以更容易地阅读类型。例如:

  • int* constconst指向 [non- const]的指针int
  • int const*是一个 [non- const] 指向 aconst int
  • int const* const是一个const指针const int

然而,对于历史上任何不幸的事故,允许顶层const写在左边被认为是合理的,即,const int绝对int const等价。当然,尽管在const类型的右侧明显正确放置,便于阅读类型并且具有一致的位置,但许多人认为顶层const应该写在左侧。

于 2013-10-16T23:41:39.183 回答
17

在这种情况下,&不是地址运算符。

void function (type_Name const&);

相当于:

void function (const type_Name &);

这只不过是通过const引用获取参数的函数原型。你应该自己研究这类主题,最好是从一些好书上学习。但是,如果您正在寻找一些额外的材料,这些问题也可能对您有所帮助:
C++ 中指针变量和引用变量之间的区别是什么?
指针与引用何时使用引用与指针在 C++ 中按引用/值传递

于 2013-10-16T23:26:36.670 回答