设计一个具有名称和员工编号的员工类。派生经理,科学家和劳动者班。经理类拥有额外的属性标题和会费。科学家类有额外的属性数量的出版物。劳工阶级没有什么额外的。这些类具有设置和显示信息的必要功能。
我的解决方案
#include<iostream>
#include<cstring>
using namespace std;
class employee
{
protected:
char *name;
int number;
public:
employee()
{
cout<<"enter employee name \n";
cin>>name;
cout<<"enter employee number \n";
cin>>number;
}
void display()
{
cout<<"name \t"<<name<<endl;
cout<<"number \t"<<number<<endl;
// inside class function is a inline function
}
};
class manager: private employee
{
float due;
char *title;
public:
manager()
{
cout<<"due\t "<<endl;
cin>>due;
cout<<"title\t"<<endl;
cin>>title;
fflush(stdin);
}
void display()
{
employee::display(); //inside class function is a inline function
cout<<"due\t"<<due<<endl;
cout<<"title\t"<<title<<endl;
//inside class function is a inline function
}
};
class labour :private employee
{
public:
void display()
{
employee::display(); //inside class function is a inline function
}
};
class Scientist :private employee
{
int number;
public:
Scientist()
{
cout<<"publication number "<<endl;
cin>>Scientist::number;
}
void display()
{
employee::display();
cout<<" pub number "<<Scientist::number<<endl;
fflush(stdin);
} //inside class function is a inline function
};
int main()
{
manager m;
m.display();
Scientist s;
s. display();
labour l;
l.display();
return 0;
}
不要使用C字符串 - 因为这应该是C++,然后使用'std :: string'。也不要叫'fflush(stdin)' - 它最好不可移植,最坏的情况是UB。正确格式化代码也是一个好主意。 –
'fflush(stdin);'是未定义的。不要这样做。 – molbdnilo
构造函数不应该以任何方式与用户交互。 – molbdnilo