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合成对应的版本并将其声明为删除的。

  • 相关阅读:
    ORACLE学习记录
    Oracle拆分字符串函数
    spring3.2.5学习(二)——IoC注解配置
    spring3.2.5学习(一)——spring环境配置以及IOC简介
    使用SQL脚本将表字段生成实体类属性VO
    JAVA多线程笔试题
    初步接触LVS
    linux中shell,awk,sed截取字符串方法总结
    调用sort段错误问题
    开源软件许可协议简介
  • 原文地址:https://www.cnblogs.com/zoneofmine/p/7466826.html
Copyright © 2011-2022 走看看