gpt4 book ai didi

c++ - 您可以将引用绑定(bind)到未初始化的成员吗?

转载 作者:搜寻专家 更新时间:2023-10-31 01:14:26 25 4
gpt4 key购买 nike

简短的问题,以下是否可以:

struct X
{
A& x;
A y;
X() : x(y) {}
};

颠倒结构中两个成员的顺序肯定没问题,因为它保证首先初始化 y,但这是否有效或调用 UB?

此外,以下是否可以:

struct X
{
X& x;
X() : x(*this) {}
};

?

最佳答案

我认为这不会调用未定义的行为。

我不认为这种情况与此有任何不同:

 int *p = new int;

表达式 new int 是一个指向未初始化 int 的指针。这里我们用 new int 初始化指针 p。未读取内容

同样,

 int & r = *p; //or *new int

这里我们用*p 初始化reference r内容未读

在这两种情况下,内容 都不会被读取。 读取未初始化的变量会调用未定义的行为。在这两种情况下,未初始化的是内容,而不是地址,我们也不是读取内容。

关于c++ - 您可以将引用绑定(bind)到未初始化的成员吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11338601/

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