gpt4 book ai didi

c++ - 对由文字实例化的对象的类引用

转载 作者:行者123 更新时间:2023-11-30 03:17:07 26 4
gpt4 key购买 nike

这里发生了什么?

struct A {
A (int){std::cout<<'A';}
};
const A& a = 3;

我的假设是因为文字 3 是一个右值,所以应用了临时物化转换。通过调用构造函数创建一个临时对象,从而打印 A 并将引用绑定(bind)到结果对象。

最佳答案

你是对的。 a 是左值引用 [dcl.ref]/2对于 const 限定的类类型,初始化表达式 3 是纯右值 [expr.prim.literal]/1非类类型 int [lex.icon]/2const A 既不引用相关也不兼容引用 [dcl.init.ref]/4 .因此,[dcl.init.ref]/5.4.1似乎适用。有一个转换构造函数 [class.conv.ctor]/1 ,它将用于将 3 转换为 const A 类型的纯右值,然后用于初始化引用。这一次,初始化器表达式现在是 const A 类型的纯右值,它是与 const A 相关的引用。因此,[dcl.init.ref]/5.3应该申请,这将执行临时物化[conv.rval] .进程中创建的临时对象的生命周期会延长[class.temporary]/6因为它被绑定(bind)到位于全局命名空间范围内的引用 a ......

关于c++ - 对由文字实例化的对象的类引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55762731/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com