有一些C++的程序代码看不懂

#include

#include

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(){

cout<<name<<":";

switch(mode){

case GRADE:cout<<grade;

break;

case PASS: cout<<(pass?"pass":"FALL");break;

case PERCENTAGE: cout<<percent;break;

}

cout<<endl;

}

int main()

{

Examinfo course1("english",'b');

Examinfo course2("calcus",true);

Examinfo course3("c++ programming",85);

course1.show();

course2.show();

course3.show();

return 0;

}
程序中的enum和union的初始化看不懂,求教,怎么会是那种形式呢?求详细解释,谢了

一个是枚举,一个是联合。
请参考:http://blog.csdn.net/lvsmaster/article/details/5839005

谢谢了