zoukankan      html  css  js  c++  java
  • C++ Primer 笔记——union

    1.union是一种特殊的类。一个union可以有多个数据成员,但是在任意时刻,只有一个数据成员可以有值。当我们给union的某个成员赋值之后,该union的其他成员就变成未定义的状态了。分配给一个union对象的空间至少要能容纳它的最大的数据成员。和其他类一样,一个union定义了一种新类型。

    2.union不能含有引用类型的成员,C++11新标准中,含有构造函数或析构函数的类类型也可以作为union的成员类型。

    3.union可以为其成员指定public,protected和private等保护标记。默认情况下,union的成员都是共有的。

    4.union的名字是一个类型名,和其他内置类型一样,默认情况下union是未初始化的。如果提供了初值,则该初始值被用于初始化第一个成员。

    5.匿名union是一个未命名的union,并且在右花括号和分号之间没有任何声明。一旦我们定义了一个union,编译器就自动地为该union创建一个未命名的对象。匿名union不能包含受保护的成员或私有成员,也不能定义成员函数。

    union
    {
        char cval;
        int ival;
    };
    
    cval = 'c';        // 该对象当前保存的值是‘c’
    ival = 1;        // 该对象当前保存的值是1


    6.C++的早期版本规定,在union中不能含有定义了构造函数或拷贝控制成员的类类型成员。C++11新标准取消了这一限制。

    7.当union包含的是内置类型的成员时,编译器将按照成员的次序依次合成默认构造函数或拷贝控制成员。但是如果union含有类类型的成员,并且该类型自定义了默认构造函数或拷贝控制成员,则编译器将为union合成对应的版本并将其声明为删除的。

  • 相关阅读:
    消除QQ表情小游戏
    图片排序
    自定义字体
    随机图片滚动
    生成500个0-1000的随机数&&数组查找—小练习
    文字搬运
    查找 替换
    BeginInvoke和EndInvoke方法
    MVC HtmlHelper用法大全
    30分钟LINQ教程 【转载】
  • 原文地址:https://www.cnblogs.com/zoneofmine/p/7466826.html
Copyright © 2011-2022 走看看