问题标签 [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 回答
147 浏览

c++ - 这是符合标准的有效 C++ 代码吗?

我有这个示例代码:

基本上我担心我在Test哪里存储对临时变量的 const 引用并在 methof 中使用它的构造函数f。临时对象引用会在内部保持有效f吗?

0 投票
2 回答
5268 浏览

c++ - 隐式转换:常量引用 vs 非常量引用 vs 非引用

考虑这段代码,

编译得很好,运行良好。但是,如果我更改f(B)f(B&),它不会编译。如果我写f(const B&),它再次编译良好,运行良好。原因和道理是什么?

概括:

我想听听语言规范中每种情况的原因、理由和参考资料。当然,函数签名本身并没有错。而是A隐式转换为Band const B&,但不转换为B&, 并导致编译错误。

0 投票
2 回答
710 浏览

c++ - 具有选择了非常量引用的复制构造函数的参数类型的函数?

前段时间,当我想编写一个is_callable<F, Args...>trait 时,我对某些代码的以下行为感到困惑。重载解析不会调用通过非常量 ref 接受参数的函数,对吗?为什么它不拒绝以下因为构造函数想要一个Test&?我预计它会采取f(int)

错误信息是

你能解释一下为什么一个有效而另一个无效吗?

0 投票
1 回答
1693 浏览

c++ - 在 c'tor 初始化器列表中将临时绑定到 const 引用

C++03 中的第 12.2.5 节说“临时绑定到构造函数的 ctor-initializer (12.6.2) 中的引用成员直到构造函数退出
所以我尝试了以下程序

我得到的输出是:

现在根据标准,由 bar 的 c'tor 的 c'tor init-list 中的 foo() 临时生成的临时文件将在 bar 的 c'tor 之后被销毁,因此foo d'tor应该在之后打印,bar c'tor
但情况相反。
请说明原因。

0 投票
2 回答
336 浏览

c++ - const 引用右值的类数据成员的生命周期是多少?

通常,此讨论仅取决于局部函数变量:

但是,这条规则是否class也适用于会员?

现在A用作,

在所有 3 ly 分配的生命周期中,内容是否会 保持a 不变 newA

0 投票
5 回答
12969 浏览

c++ - C ++:将枚举作为值还是作为常量引用传递更好?

这里有两个相关的问题:

A)枚举是如何实现的?例如,如果我有代码:

实际发生了什么?我知道您可以将 TYPE_1 和 TYPE_2 视为整数,但它们实际上只是整数吗?

B)基于该信息,假设传入的枚举不需要更改,将 myType 作为值或作为 const 引用传递给函数是否更有意义?

例如,哪个是更好的选择:

或者

0 投票
4 回答
6510 浏览

c++ - 警告 C4172:返回对绑定到局部变量的 const std::string 的引用。它有多安全?

我刚刚在工作中构建我们的一个项目,我看到添加了一个新功能:

编译器给出警告:

警告 C4172:返回局部变量或临时地址

我认为编译器是对的。这个功能有多安全?

请注意,该函数不会返回const char*,因为字符串文字具有静态存储持续时间。它返回一个引用const std::string

0 投票
3 回答
316 浏览

c++ - 为什么这个引用调用会创建一个新实例?

foo我通过以下方式调用方法const ref

这段代码不仅编译,它创建一个新实例,Entity其默认值在foo. 我希望这不会编译或至少崩溃。

如果我foo正确调用 ( foo(*e)),一切都会正常工作,并且我会看到Entitywithin的正确值foo

我使用 Qt 4.7 提供的 mingw。

这是 的界面Entity

0 投票
2 回答
245 浏览

c++ - 防止临时延长其使用寿命?

这可能是不可能的,但我想知道是否有可能让一个暂时的东西永远不会超过它原来的表达方式。我有一个指向父对象的对象链,以及一个将创建子对象的成员函数,一个简化的例子是here

我想使用的方式person是将它传递给一个函数,如下所示:

没问题。

只要没有一个临时对象存活超过原始表达式,这将正常工作,但是如果我将最终临时对象之一绑定到 const 引用,它的父母将无法存活,并且我得到一个段错误。我可以隐藏person的复制构造函数和赋值运算符,但是有什么办法可以防止这种错误的发生吗?如果可能的话,我想避免动态分配。

0 投票
3 回答
5034 浏览

c++ - 内联函数参数传递

内联函数是否需要在性能方面通过const 引用传递其参数,例如

按值比较

如果我不更改函数中 a 和 b 的值?C ++ 11更改是否在这里推荐任何具体内容?