⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 a_6_5.cpp

📁 C++应用教程原码,里面包含该书中有十三章内容的代码,详细具体
💻 CPP
字号:
  
#include "stdafx.h"
#include "iostream"
using namespace std;
enum TYPE {INT,DOUBLE,CHAR};

union Value 
{      Value() {};
       Value(int x) : ival(x){}  // 定义了三个构造函数
       Value(double x) : dval(x) {}
       Value(char* x) : cval(x){}   
	   int ival;
       double dval;
       char* cval;
};
class A {
	public:
       TYPE discriminant;
	   A(int x):val_a(x), discriminant(INT){}
	   A(double x):val_a(x),discriminant(DOUBLE) {}
	   A(char* x):val_a(x),discriminant(CHAR) {}
       int & i_val() 
	   { if (discriminant == INT)
	         return val_a.ival;
	   	 else 
		 {cout << "联合类的存储空间中不是int类型数据"<< endl;
	      cin.get(); //等待结束,以便调测程序,可以删除
	      exit(-1);
		 }
	   }  
       double & d_val() 
	   { if (discriminant == DOUBLE)
	        return val_a.dval;
	   	 else 
		 {cout << "联合类的存储空间中不是double类型数据"<< endl;
          exit(-1); 
		 }
	   }
       char* & c_val() 
	   { if (discriminant == CHAR)
	        return val_a.cval;
	     else 
		 {cout << "联合类的存储空间中不是char*类型数据"<< endl;
	      exit(-1);
		 }
	   }
private:
		   Value val_a;

};
void main()
{ A a(122233333.1415926);
  cout << "当前联合类的值是"<<a.d_val()<<endl;
  a.discriminant=CHAR;
  a.c_val() = "adsfdadf";
  cout << "当前联合类的值是"<<a.c_val()<<endl;
  cout << "当前联合类的值是"<<a.i_val()<<endl;
  cin.get();cin.get();cin.get();
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -