【问题标题】:C++ diffrence between const & to regular & [duplicate]const & 与常规 & [重复] 之间的 C++ 差异
【发布时间】:2012-06-13 16:45:36
【问题描述】:

可能重复:
Use of 'const' for function parameters

我是 C++ 的新手,来自 java 编程,所以 C++ 中奇怪的引用引用对我来说很不自然。我不是一个新的程序员,所以我希望能对这个主题给出一个严肃而深入的回答,而不是一个肤浅的“何时使用”的回答。

我想知道有什么区别

const A& p; 

A& p;

【问题讨论】:

  • 第一个是 const,第二个不是。这里有什么不自然的? o.O
  • @Griwes - 不自然的是 Java 和 .NET 语言确实没有有一个明确的 const-ness 概念,这对于(好的)C++ 程序员来说是这样的就像一个重大的遗漏。
  • @AAT,等等,我们应该使用 Google 进行 OP,还是成为 OP 的“活的百科全书”?另外,我们应该禁止在 C++ 之前教授 Java 或 .NET 语言...
  • @bmarguiles 这怎么可能是一个没有提及引用而只询问函数参数的问题的重复?
  • @Griwes,我并没有不同意你的观点,只是对 Java 和 .NET 提出了一点半开玩笑的看法。也许我应该放一个 !

标签: c++ reference constants


【解决方案1】:

const A& p 是对A 类型的常量对象的引用。

A& p 是对A 类型的(非常量)对象的引用。

【讨论】:

  • const A& p 是对 A 类型对象的 const 引用,它本身可能是也可能不是 const
  • @Ferruccio:不,C++ 中没有“常量引用”这样的东西。这意味着什么?引用是从不可变的,因为你永远不能将它设置为指向不同的对象。您有对 const 对象的引用和对非 const 对象的引用。但是你没有 const 引用
  • 信息会不会少一些?你根本没有帮助我..
  • @OfekRon:那么也许你应该更清楚你想知道什么。也许您应该放弃这种态度,因为我实际上是在尝试回答您的问题(与投票结束的所有其他人不同)。你不明白的究竟是什么?你知道什么是 const 对象吗?你知道什么是参考吗?
  • @jalf - 是的,当然引用本身永远不会改变。对我来说,这是一个糟糕的条款选择。我的意思是,如果你写const A& p = q;,即使q 可能是可变的,你也不能通过p 更改它而不调用未定义的行为。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-17
  • 2019-09-16
  • 2016-05-04
  • 2012-12-02
  • 1970-01-01
相关资源
最近更新 更多