问题标签 [const-reference]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
3510 浏览

c++ - 在 c++ 中,为什么编译器在 const 也可以工作时选择非常量函数?

例如,假设我有一个类:

在代码的其他地方,我有这样的东西:

有谁知道为什么编译器会在这种情况下选择非常量版本?

这是一个有点做作的例子,但我们试图解决的实际问题是定期自动保存一个对象,如果它已经改变,并且指针必须是非常量的,因为它可能会在某个时候改变。

0 投票
4 回答
25985 浏览

c++ - 从函数返回对局部变量的 const 引用

我对从函数返回对局部变量的引用有一些疑问:

我的问题是=>

  1. 执行是否getA1()正确?我觉得这是不正确的,因为它返回的是局部变量或临时变量的地址。

  2. (1,2,3)中的哪些语句main会导致未定义的行为?

  3. 标准是否保证在const A& newA1 = getA1();引用超出范围之前不会破坏由 const 引用绑定的临时绑定?

0 投票
2 回答
490 浏览

c++ - 是否可以更改临时对象并将其作为参数传递?

是否可以更改临时对象并将其作为参数传递?

众所周知,将临时对象分配给 const 引用会延长该临时对象的生命周期。那么我的代码的#4 和#5 行呢?引用 x 在函数 func_ref 中是否始终有效?问题是 operator-- 返回一些引用,编译器看不到这个引用和我们创建的临时值之间的任何关系。

0 投票
4 回答
340 浏览

c++ - 为什么这行得通?在 C++ 中返回 const 引用

我在玩弄 C++ 和 const 引用,很困惑为什么这段代码有效:

结果:

以下是我的想法:

var 存储对 a_ 的引用。
当 a 被删除时, a_ 也应该被删除。
当再次访问 var 时,它不再包含有效的引用,并且应该发生分段错误。

为什么这行得通?我不相信我会制作临时副本。

0 投票
5 回答
1089 浏览

c++ - C++ 中的引用初始化

谁能向我解释为什么这两个陈述之间存在差异?

A&它说从临时类型的类型的非常量引用的无效初始化A

为什么在const这里很重要?

0 投票
7 回答
7462 浏览

c++ - 如果失败,如何返回 const QString 引用?

考虑以下代码:

如何在不更改方法的返回类型的情况下避免有一个空的 QString ?(似乎返回分配在堆栈上的空 QString 是个坏主意)

谢谢。

0 投票
6 回答
51597 浏览

c++ - const 引用类成员是否会延长临时对象的寿命?

为什么会这样:

给出以下输出:

答案是:

代替:

答案是:四

0 投票
5 回答
388 浏览

c++ - 通过组合添加类功能

假设我们有一个抽象类Element,其中类TriangleQuadrilateral派生自。

假设这些类与取决于元素形状的插值方法结合使用。所以,基本上我们创建了一个抽象类InterpolationElement,我们从中派生InterpolationTriangleInterpolationQuadrilateral

Triangle然后,为了在和Quadrilateral类中包含插值功能,我们在Elementtype 类中添加了一个 const-reference 数据成员InterpolationElement,即:

然后,我们创建一个方法(如 Scott Meyers,Effective C++ 所述),将类的本地静态对象实例InterpolationTriangle化为

所以这个类Triangle可以像这样构造:

这是我的问题:为了在我的班级中加入插值方法,这种方法是否正确Element?这是在专业场景中使用的吗?

我可以直接在类(作为纯虚拟)上实现所有插值方法,Element并在派生类TriangleQuadrilateral. 然而,这种方法在我看来很麻烦,因为每次我需要改进或实现新的插值功能时,我都必须在这些类上这样做。此外,使用这种方法,类变得越来越大(许多方法)。

我想听听你的一些建议和意见

提前致谢。


额外细节:

0 投票
1 回答
532 浏览

c++ - map 的 const_reference 或迭代器(实际上不迭代时)

我有一些代码使用迭代器循环遍历 unordered_map 的所有元素,但在该循环中还有其他几个进程,我将迭代器存储到地图中的特定元素,并且通常会进行大量跳转但不迭代(不包括最外层迭代器)。

在我看来,unordered_map::const_reference如果我实际上没有进行迭代,使用 a 到一个元素可能更合适。这是真的?阻止我使用 const_references 的唯一原因是,从我的快速谷歌搜索来看,它们似乎很少被大众使用,或者至少很少讨论。

0 投票
4 回答
6831 浏览

java - 返回数组列表的 const 引用

我真的很佩服java特性,我不想放弃使用它来解决下一个问题:

我有一个可能被继承的类,它的内部是一个private ArrayList arr;所以 setter 函数是好的,但是 getter 函数return arr;返回对该变量的引用,任何人都能够编辑我不想要的整个数组,并且私有不会'没有任何意义!

在 C++ 中,我只会return const arr;返回对变量的常量引用。

我非常需要不要克隆或手动复制变量,因为有太多计算需要(只读变量)为什么在 java 中没有返回 const ???? 有什么办法可以逃避复制吗?

ps(final ArrayList<Integer> arr;)不是一个选项,因为该数组总是改变大小或元素值。

如果我找不到解决方案,我威胁要回到 C++ 或公开所有内容,你永远不应该得到我的软件:D


编辑:一个更重要的问题:我是否要求一些不好的东西(软件工程方面)我的意思是如果 JAVA 创建者认为没有 const 引用(返回只读引用),那么我必须要求一些可以在其他方面处理的东西方式。或者我的程序设计错了我很困惑。