📄 a_6_5.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 + -