版权声明:版权所有 如有侵权 概不追究 https://blog.csdn.net/weixin_40903417/article/details/86665720
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
class ExamInfo
{
public:
ExamInfo(string name,char grade):name(name),mode(GRADE),grade(grade){}
ExamInfo(string name,bool pass):name(name),mode(PASS),pass(pass){}
ExamInfo(string name,int percent):name(name),mode(PERCENTAGE),percent(percent){}
void show();
private:
string name;
enum
{
GRADE,PASS,PERCENTAGE
}mode;
union //无名联合
{
char grade;
bool pass;
int percent;
};
};
void ExamInfo::show()
{
switch (mode)
{
case ExamInfo::GRADE:cout<<name<<":"<<grade<<endl;
break;
case ExamInfo::PASS:cout<<name<<":"<<(pass?"PASS":"FAIL")<<endl;
break;
case ExamInfo::PERCENTAGE:cout<<name<<":"<<percent<<endl;
break;
default:
break;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
ExamInfo a("Math",'A');
ExamInfo b("English",true);
ExamInfo c("Chinese",98);
a.show();
b.show();
c.show();
system("Pause");
return 0;
}
无名联合体内,数据占用同一个内存空间