繁体   English   中英

C++ 中的联合(请解释一下)

[英]Unions in C++ (Please explain it)

#include <iostream>

#define print(x) std::cout << x
#define println(x) std::cout << x << std::endl

struct Vector2 {
    float x, y;
};

struct Vector4 {
    union {
        struct {
            float x, y, z, w;
        };
        struct {
            Vector2 a, b;
        };
    };
};

void PrintVector2(const Vector2& vector) {
    println(vector.x << ", " << vector.y);
}

int main() {
    Vector4 vector = { 1, 2, 3, 4 };
    vector.x = 2;
    vector.z = 500.0f;
    PrintVector2(vector.a);
    PrintVector2(vector.b);
}

谁能解释这段代码中发生了什么?,我不明白联合是什么以及它们是如何工作的:/!

这是 output

2, 2
500, 4

代码的行为是未定义的。

这只不过是一个精心设计的union type-pun C++ 标准不允许这样做,因为 C++ union有一个活跃成员的概念。 一旦设置了活动成员,您就无法以定义的方式读取另一个成员。 (您当然可以通过重新分配来更改活动成员。)

用我用斜体标出的术语谷歌一下:在这里更深入的意义不大。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM