C++学习笔记:C++联合类

测试代码:

#include<iostream>
#include<string>
using namespace std;


//测试联合类;
class examInfo{
	public:
		examInfo(string name,char grade);
		examInfo(string name,bool pass);
		examInfo(string name,int percent);     //三个构造函数
		void show();                           //输出
	private:
	    string name;      //课程名称 
	    //枚举的类型名字要写在后面 
		enum {  GRADE,
				PASS,
				PERCENTAGE
		}model;
		//联合体,可以省略名字,访问直接访问其属性名称 
		union{
			char grade;  //
			bool pass;
			int percent; 
		};
}; 


//构造函数初始化,内嵌对象初始化 
examInfo::examInfo(string name,int percent):name(name),model(PERCENTAGE),percent(percent) {
} 
//构造函数初始化,内嵌对象初始化 
examInfo::examInfo(string name,bool pass):name(name),model(PASS),pass(pass) {
} 
//构造函数初始化,内嵌对象初始化 
examInfo::examInfo(string name,char grade):name(name),model(GRADE),grade(grade) {
} 

//show 函数
void examInfo::show()
{
	cout<<name;
	switch(model){
		case GRADE:cout<<grade<<endl;
		break;
		case PASS:cout<<(pass?"pass":"fail")<<endl;
		break;
		case PERCENTAGE:cout<<percent<<endl;
		break;
	} 
 } 

//测试
int main()
{
	//英语 
	examInfo course01("英语:",'B');
	course01.show();
	//高数 
	examInfo course02("高数:",true);
	course02.show();
	//c++ 
	examInfo course03("C++:",80);
	course03.show();
	
	return 0;
 } 

备注: 枚举类型的声明为: enum 枚举名称{ }; 但在Dev C++编辑器的环境下,这样写会报错,至于为啥,还不清楚,先写在这里。下面是DevC++的枚举声明:

		enum {  GRADE,
				PASS,
				PERCENTAGE
		}model;

这里是把枚举的名称放在最后,放在前面编译会报错。

参考书籍:C++语言程序设计第四版(郑莉,董渊,何江舟)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值