C++小白..求调教
#include<iostream>
#include<string>
using namespace std;
class Employee
{
protected:
string name;
string ID;
public:
Employee(){};
virtual void set()=0;
virtual void show()=0;
~Employee(){};
};
class Manager:public Employee
{
private:
double salary;
public:
Manager(){};
void set(string n,string i,double s)
{
name=n;
ID=i;
salary=s;
};
void show()
{ cout<<"Manager"<<endl;
cout<<"name:"<<name<<endl;
cout<<"ID:"<<ID<<endl;
cout<<"salary:"<<salary<<endl;
};
~Manager(){};
};
void main()
{ Employee *p;
Manager m;
p=&m;
p->set("a","1001",3000);
p->show();
}
[解决办法]
Employee中的定义改为virtual void set()=0;改为void set(string n,string i,double s)=0;就达到你想要的结果了
[解决办法]
基类virtual void set()=0这个方法为纯虚函数,但是你在子类Manager中却实现了void set(string n,string i,double s)这个方法,并没有实现virtual void set()=0,所以子类Manager还是一个抽象类,是不能实例化的