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

c++ - C++:常量引用和初始化顺序

我想知道我是否在以下使用了好的方法:

  • 我想构造一个父类(A类),这个类应该拥有给定“Foo”类的一个实例
  • 我希望父类拥有一个子类成员(B 类),并且该成员应该具有对父类的 foo 成员的引用。

下面的代码似乎有效,但我想知道我是否只是“幸运”编译器足够同情。

为了清楚起见,我在下面的评论中添加了评论和我的问题。

谢谢 !

0 投票
1 回答
239 浏览

c++ - 如果没有 const 引用,临时对象会被删除吗?

让我们看一下这两个函数:

这里有两个可能的调用process_c_stringwith 参数返回的get_string

  1. 没有绑定 const 对返回对象的引用get_string

    /li>
  2. 使用绑定 const 引用返回的get_string.

    /li>

我知道第二种方法是有效的,但是第一种方法呢,标准对这种情况有什么看法?返回的临时对象会不会因为不存在而在完成get_string前被删除?process_c_strconst reference

注意:这两个版本在 MSVC 中都可以。

0 投票
3 回答
15404 浏览

c++ - 在 Qt 中发送信号时的 const-ref

这是我在 const-ref 中从未得到过的东西,我真的希望有人可以向我解释。

在另一个函数内部调用一个函数时,我知道 const-ref 是传递我不打算篡改的堆栈对象时的最佳方式。例如:

到目前为止一切顺利,我猜。但是信号呢?传递参考是否有任何风险?尽管它是const. 感觉就像我一直在阅读所有关于 const-ref 的文档,但我仍然觉得有点冒险,因为我将其理解为“发送对对象的引用并保留它const”。如果它所指的对象超出范围怎么办?

例如:

这里到底发生了什么?我经常在函数调用中使用 const-ref,我只想访问对象但不更改它。但是信号呢?大多数信号似乎在 Qt 文档中都有 const-ref parm,但它是如何工作的?

0 投票
1 回答
342 浏览

c++ - 将 temp 分配给 const ref 成员会导致分段错误

通过一个例子更好地解释:

托克.h

主文件

程序打印 0 这是错误的。实际代码出现段错误。

我希望延长分配给 const 引用的 temp 的生命周期的规则在这里会成立,但显然不是。你知道原因吗?

0 投票
3 回答
203 浏览

c++ - 为什么引用可能是一个对象?

目前正在学习 c++,没有比向 SO 的专家提问更好的地方了,我找不到比这里更完整和更好的答案。就这样。

显示存储值的地址dw

但是为什么:

为什么在这个例子中显示的是值dw而不是dw地址?

0 投票
2 回答
4477 浏览

c++ - 将 const 引用返回到本地对象时究竟会发生什么?

我知道,返回对本地值的引用是不好的。但是,另一方面,const 引用应该延长临时对象的生命周期。

此代码产生一个 UB 输出。所以没有延长寿命。

为什么?我的意思是有人可以逐步解释发生了什么吗?

我的推理链中的错误在哪里?

富():

  1. A(32) - 演员

  2. return A(32) - 创建并返回对本地对象的 const 引用

  3. A a = foo(); - a 由 foo() 返回值初始化,返回值超出范围(超出表达式)并被销毁,但 a 已经初始化;

(但实际上析构函数是在复制构造函数之前调用的)

foo_2():

  1. return 6 - 隐式创建类型 A 的临时对象,创建对该对象的 const 引用(延长其寿命)并返回

  2. A a = foo(); - a 由 foo() 返回值初始化,返回值超出范围(超出表达式)并被销毁,但 a 已经初始化;

(但实际上析构函数是在复制构造函数之前调用的)

0 投票
2 回答
6962 浏览

c++ - 对临时与返回值优化的 const 引用

我知道将右值分配给 const 左值引用会延长临时对象的生命周期直到作用域结束。但是,我不清楚何时使用它以及何时依赖返回值优化。

根据 Scot Meyers 的“更有效的 C++”(第 20 项),编译器可以优化第二种方法以在适当的位置构造对象(这将是理想的,并且正是const&第一种方法试图实现的目标)。

  1. 是否有任何普遍接受的规则或最佳实践何时用于const&临时人员以及何时依赖 RVO/NRVO?
  2. 会不会有使用const&方法比不使用更糟糕的情况?(我正在考虑例如 C++11 移动语义,如果LargeObject有那些实现的话......)
0 投票
3 回答
78 浏览

c++ - 用于公开字段的 const 引用

我有一个班级日期。让日期为:

出于某种原因,在构造函数被调用后,Day、Month 和 Year 不要指向/引用 _day、_month 和 _year。

我的一个猜测是它们是在内存分配给类之前设置的,我将如何解决这个问题(也就是在内存分配之后设置引用)?

提前致谢!

编辑:更多信息

当我获得 Day 的值时,不会返回 _day 的值(例如)。我得到一个看似随机的数字。

0 投票
1 回答
74 浏览

c++ - 为什么临时值不能在带有 const 引用参数的构造函数中使用?

代码如下

为什么?

0 投票
1 回答
57 浏览

c++ - 将临时绑定到 const 引用的特定形式无效

给定

为什么第二种形式的“将临时绑定到 const 引用”似乎等同于无操作?