zoukankan      html  css  js  c++  java
  • union

    一、关键

    内存分配:union各成员共享一段内存空间,即任一时刻只能有一个成员可以有值(故分配给一个union对象的存储空间至少要能容纳它的最大的数据成员)

    union与类:union是一种节省空间的类,但并非类的所有特性都适用于它(如其不能有引用类型的成员)

    匿名union:其成员的作用域与它的作用域相同

    union的类成员:如何管理

    二、使用union

    	union Token {
    		char cval;
    		int ival;
    		double dval;
    	};
    	Token tok = {2};		//初始化tok对象,因为该初始值为int类型,故ival成员被初始化 
    	cout << tok.ival << endl; 
    
    	tok.dval = 0.0;			//为一个成员赋值会令其他数据成员变成未定义的状态 
    

     

    三、匿名union

    	union {
    		char cval;
    		int ival;
    		double dval;
    	};						//定义一个匿名union对象 
    	cval = 'c';				//可以直接访问匿名union的成员 
    	cout << cval << endl;
    

    注:匿名union不能包含受保护的成员或私有成员,也不能定义成员函数。

    四、含有类类型成员的union

    举例:如果union含有string类型的成员,但该union没有定义默认构造函数或某个拷贝控制成员(然而string类定义了五个拷贝控制成员和默认构造函数),则编译器将为union合成缺少的成员并将其声明成删除的。这意味着,当union中含有类类型成员时,该union需要定义相关的拷贝控制成员,才能完成给该成员初始化、赋值、销毁等操作。

  • 相关阅读:
    Redis与Memcached的incr/decr差异对比
    Linux sudo用法与配置
    Docker 常用命令
    Linux之间配置SSH互信(SSH免密码登录)
    SVN服务器搭建
    shell中参数的传递
    【代码更新】IIC协议建模——读写EEPROM
    串口完整项目之串口收发字符串
    串口发送模块——1字节数据发送
    状态机设计——从简单的按键消抖开始
  • 原文地址:https://www.cnblogs.com/xzxl/p/7850782.html
Copyright © 2011-2022 走看看