C++--联合体保存信息

测试代码

#include<iostream>
#include<string>
using namespace std;
class examinfo
{
public:
	examinfo(string a,char grade):name(a),mode(GRADE),grade(grade){}
	examinfo(string a,bool pass):name(a),mode(PASS),pass(pass){}
	examinfo(string a,int percent):name(a),mode(PERCENTAGE),percent(percent){}
	void show()
	{
		cout<<name<<":";
		switch(mode){
		case GRADE:
			cout<<grade;
			break;
		case PASS:
			cout<<(pass?"pass":"fail");
			break;
		case PERCENTAGE:
			cout<<percent;
			break;
			cout<<endl;
		}
	}
private:
	string name;
	enum{
		GRADE,
		PASS,
		PERCENTAGE
	}mode;
	union {
		char grade;
		bool pass;
		int percent;
	};
	
};

int main()
{
	examinfo a1("haihong",'hy');
	a1.show();
	return 0;
}

测试结果

在这里插入图片描述

发布了218 篇原创文章 · 获赞 523 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/weixin_44225182/article/details/105372350