关于虚函数问题

时间:2022-03-25 18:50:40
/*2.2 先建立一个职工类Employee,包含数据成员name(职工姓名),ID(职工编号)。
以它为基类,派生出经理类Manager和技术人员类Technician,在经理类中增加数据成员salary(代表经理的月工资),
在技术人员类中增加数据成员wage(代表每小时的工资数)和hours(月工作时数)。
在定义类时,所有类中必须包含有构造函数、析构函数、修改和获取所有数据成员的函数,
以及虚函数计算职工的工资(哪些类中可以定义为纯虚函数?),输出职工的信息。
在main()函数中分别用Employee类型的指针来调用Manager和Technician对象的成员函数,观察虚函数的作用。*/
#include<iostream.h>
#include<string>
class Employee{
public:string name;
int ID;
Employee(int x,string y):name(x),ID(y){}
~Employee(){cout<<"析构employee"<<endl;}
set(int x,string y){ID=x;name=y;}
virtual  showsalary()=0;

};
class Manager: public Employee{
public: Manager(int x,string y,int z):Employee(int x,string y)
{salary=z;}
    int salary;
virtual showsalary(){cout<<salary<<endl;return salary;}
        ~Manager(){cout<<"析构manager"<<endl;}
};
class Technician: public Employee{
public:int wage;
   int hours;
       Technician(int x,string y,int z,int f):Employee(int x,string y){wage=z,hours=f;}
   virtual show salary(){cout<<(wage*hours)<<endl;return (wage*hours);}

};
void main()
{
Employee *p;
Technician d1(211106426,"风",10,8);
Manager d2(211106426,"wind"2000);
P=&d1;
d1->showsalary();
}

6 个解决方案

#1


有错误,可以指点一下吗?

#2


P=&d1;
P->showsalary();

P=&d2;
P->showsalary();

#3


请问除了这个还有其它问题吗?

#4


我的编译器提示好多错误,其中有什么string的问题。我也不理解。。

#5


#include<string>后还要加一句using std::string;
还有Manager d2(211106426,"wind" ,2000);

#6


一般百度可解决 关于虚函数问题

#1


有错误,可以指点一下吗?

#2


P=&d1;
P->showsalary();

P=&d2;
P->showsalary();

#3


请问除了这个还有其它问题吗?

#4


我的编译器提示好多错误,其中有什么string的问题。我也不理解。。

#5


#include<string>后还要加一句using std::string;
还有Manager d2(211106426,"wind" ,2000);

#6


一般百度可解决 关于虚函数问题