gpt4 book ai didi

c++ - 初始化指针或引用成员变量以指向另一个成员

转载 作者:太空狗 更新时间:2023-10-29 23:10:26 24 4
gpt4 key购买 nike

以下是明确定义的行为吗,它的行为是否符合人们的预期:

class A {
int x;
int &y = x;
int *z = &x;
}

另外,在做类似的事情时有什么需要注意的吗?(查看更新)y 在 x 之后很重要吗?

我可以用这样的数组来做吗:

class A {
int arr[2];
int &y = arr[0];
int *z = &(arr[1]);
}

所有这一切似乎work fine ,但我担心这取决于实现/不可移植。

编辑/更新

我用它来用数组替换一组成员变量,同时保持向后兼容性。所以,我要从这样的事情开始:

class A {
int x0;
int x1;
}

class A {
int x[2];
int &x0 = x[0];
int &x1 = x[1];
}

自从问了这个问题后,我遇到了一个例子,说明在像这样使用它时要小心:x0x1 的行为与以前不同如果它们出现在初始化列表中。它们不能被初始化为整数文字,如果它们被初始化为任何东西,x0 将不会引用 x[0] 和/或 x1 不会引用 x[1]

我会发布这个作为答案,但我仍然不知道我的主要问题的答案:是否有任何给定场景的实现依赖/未定义行为?

最佳答案

是的,这一切都有效,它们的顺序无关紧要(除非您尝试“获取”未初始化引用的地址,因为这取决于它的“值”)。即使使用数组,单纯的指针运算也是 well-defined .

关于c++ - 初始化指针或引用成员变量以指向另一个成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58176489/

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