今天读了一段程序有点疑惑,为什么里面的构造函数是这样的
#include<string>
#include<iostream>
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;
}
因为昨天刚刚看了类的组合,类的组合的构造函数的一般形式是:类名::类名(形参):内嵌对象1(参数),内嵌对象2(参数)…,自己猜想应该是类的组合,可又觉得只有一个类那来的组合呢,觉得这样理解行不通,就上网查了一下,发现原来是构造函数的另外一种形式就是:类名::类名(形参):数据1(参数),数据2(参数),……,这样就可以行得通了