问题标签 [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 投票
1 回答
321 浏览

c++ - 如何访问 const 引用参数的值?

如果我有一个与此类似的功能:

如果我需要获取 old_value 和 new_value 的值并在可变变量中使用这些值怎么办?

我不能用 * 指针取消引用。我该如何解决这个问题?

0 投票
1 回答
87 浏览

c++ - 如何从通过非常量输出参数提供所需数据的函数中获取替代值,以将引用到常量变量分配给它?

注释代码有效,但它不是参考,因此它具有更多的计算成本。

未注释的代码是我尝试使用三元运算符和 lambda 表达式的最大程度,但直到现在它还没有成功,给出了错误:

需要注意的重要事项:

  • 我传递this了 lambda 捕获,只是为了访问该GetInnerItems方法
  • GetInnerItems方法通过其类型的第一个参数提供内部项目,该参数CArray<CItem*>&是非常量且永远不会是 const。

因此,在我看来,问题在于GetInnerItems工作方式,与三元运算符无关。假设我不能改变它的签名来返回 a CArray,因为CArray是从CObjectwhich 派生的声明:

所以,问题是:

  • 如何将替代值分配给保持 const 正确性的引用到 const变量? Items

  • 如果您使用 a 成功回答了第一个问题const_cast,那么您现在可以在没有它的情况下给出解决方案吗?

0 投票
1 回答
1249 浏览

c++ - C++, const reference is actually faster than move?

After testing this code:

I get that using const-reference is actually ~15s faster than using move semantics, why is that? I thought that move semantics were faster, else, why would they add them? What did I get wrong about move semantics? thanks

0 投票
2 回答
446 浏览

c++ - 将返回值存储为 const 引用与值

假设一个函数有签名

并且它按值返回一个新字符串。现在给出以下代码:

从 C++11 编译器的角度来看,我是否正确理解 (a) 和 (b) 是相同的?如果是这样,在风格的选择上是否有一个粗略的共识?

0 投票
2 回答
1717 浏览

c++ - 使用具有默认值的参考参数是好的做法吗?

我有以下代码:

带有临时参数和不带参数的调用有多糟糕(如果有的话)?

据我所知,这只是因为 const 引用延长了临时的寿命直到方法结束http://herbsutter.com/2008/01/01/gotw-88-a-candidate-for -最重要的常量/

尝试在没有constnext tos参数的情况下编译相同的示例失败。

汇编

0 投票
1 回答
72 浏览

c++ - 用非常量值初始化的对 cont 类成员的引用

我有一个类应该作为其输入数据,或者使用对外部数据的引用(不复制),或者根据其他输入创建数据本身。我更喜欢使用引用(以避免取消引用,因为数据是矩阵)并最终得到以下结构(简化):

该示例有效:

但是这种方法有什么潜在的问题吗?特别是,我正在更改的事实x0是由const向量x “合法”C++ 引用的,还是其他编译器可能会抱怨的事情?

另外,我可以确定第一个构造函数避免复制数据吗?

0 投票
2 回答
512 浏览

c++ - 如果 C++ 类同时包含 const 引用和非 const 引用复制构造函数怎么办?

片段1:

输出:调用 const 复制构造函数


片段2:

输出:调用非常量复制构造函数


片段3:

输出:错误:复制构造函数必须通过引用传递其第一个参数


我很困惑:

  1. 对于代码段 2,为什么这里的非常量复制构造函数有效?为什么调用非 const 复制构造函数,而不是 const 构造函数。
  2. 对于片段 3,我知道复制构造函数必须使用 const 引用以避免无限递归。但是 Here class C has got C(const C& c)C(C c)不会导致无限递归,为什么它仍然不起作用?
0 投票
0 回答
58 浏览

c++ - 构造函数中的字符串常量引用与 int 常量引用

我试图通过尝试构造函数和引用来学习。我写的课如下,我期待课后写的答案

但是我得到这样的东西。m_name当我调用该函数时丢失。使用相同的类int代替string. 问题是什么?

现在同一个类有int const参考

在这种情况下,我得到了正确的答案。

有人可以解释原因吗?内置类型是否持续存在?

0 投票
4 回答
2331 浏览

c++ - 避免构造函数中 const 引用和 rvalue 引用的指数增长

我正在为机器学习库编写一些模板类,我经常遇到这个问题。我主要使用策略模式,其中类接收不同功能的模板参数策略,例如:

问题出在构造函数上。随着策略(模板参数)数量的增长,常量引用和右值引用的组合呈指数增长。在前面的示例中:

有什么办法可以避免这种情况吗?

0 投票
1 回答
274 浏览

c++ - 在 ?: 表达式中创建的 C++ 临时对象的生命周期是否通过将其绑定到本地 const 引用来扩展?

我不清楚临时对象的生命周期是否会通过将其绑定到 ?: 表达式中的 const 引用来延长:

通过调用默认构造函数 Foo() 创建的临时对象的生命周期是否通过将其绑定到本地 const ref 来扩展,即使绑定是有条件的?或者这是否会创建一个悬空引用,因为 Foo() 的临时值将在 ?: 表达式的末尾被破坏?