gpt4 book ai didi

c++ - const 成员引用的值初始化

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:29:13 25 4
gpt4 key购买 nike

我正在查看以下形式的代码:

class foo
{
public:
foo() {}

//...
};

class bar
{
public:
bar() : ref() {}

private:
const foo &ref;
};

以这种方式使用临时对象初始化引用是否正确?我知道可以初始化一个 const 引用,它是一个带有临时变量的局部变量,这样做可以延长临时变量的生命周期,例如

const foo &tmp = funcThatReturnsByValue(); //OK

然而,相关initialize reference in initialization list的答案之一表明“短期”和“长期”引用之间存在差异,并且如上所述初始化 ref 是未定义的行为(即使 refconst 引用)。

标准中的 12.2.5 部分说,“在构造函数的 ctor-initializer 中临时绑定(bind)到引用成员,直到构造函数退出。”是描述这种情况吗?

最佳答案

此代码格式错误。您不能默认初始化或值初始化引用。

如果您在 ref() 中确实有一个表达式,那么是的,12.2.5 将适用,并且临时对象将在构造函数退出时被销毁。

关于c++ - const 成员引用的值初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4148202/

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