• cppreference系列> C++ language> Types> Union


    union

    • 特殊的类类型,一次只能持有它的一个非static数据成员
    • 可以有成员函数,但是没有虚函数
    • 没有基类,也不能作为基类
    • 不能有引用类型的数据成员
    • 默认访问级别为public
    • 大小为最大数据成员的大小

    匿名union

    int main()
    {
        union { int a; const char* p; };
        a = 1;
        p = "Jennifer";
    }

    union-like class

    #include <iostream>
    // S has one non-static data member (tag), three enumerator members, 
    // and three variant members (c, n, d)
    struct S
    {
        enum {CHAR, INT, DOUBLE} tag;
        union {
            char c;
            int n;
            double d;
        };
    };
     
    void print_s(const S& s)
    {
        switch(s.tag)
        {
            case S::CHAR: std::cout << s.c << '\n'; break;
            case S::INT: std::cout << s.n << '\n'; break;
            case S::DOUBLE: std::cout << s.d << '\n'; break;
        }
    }
    int main()
    {
        S s = {S::CHAR, 'a'};
        print_s(s);
        s.tag = S::INT; s.n = 123;
        print_s(s);
    }
  • 相关阅读:
    Baskets of Gold Coins_暴力
    Inversion_树状数组***
    萌新的旅行-
    KI的斐波那契_DFS
    牛吃草_二分法
    See you~_树状数组
    Bellovin_树状数组
    Bubble Sort_树状数组
    [Python] numpy.ndarray.shape
    [Python] numpy.sum
  • 原文地址:https://www.cnblogs.com/chenkkkabc/p/3032624.html
Copyright © 2020-2023  润新知