main.h
#include<string>
#include<iostream>
using namespace std;
#include "Stu.h"
#include "Benke.h"
#include "Yanjiu.h"
int main(){
//有纯虚函数 不能初始化对象
// Stu s1=Stu("24010105","2012040101207","鲍礼彬");
// s1.print();
Benke b1=Benke("24010105","2012040101207","鲍礼彬","计算机学院");
b1.print();
b1.show();
Yanjiu y1=Yanjiu("24010105","2012040101207","鲍礼彬","大数据");
y1.print();
y1.show();
return 0;
}
Stu.h
#ifndef STU_H
#define STU_H
#include<string>
#include<iostream>
using namespace std;
class Stu{
protected:
string banji;
string xuehao;
string name;
public:
Stu();
Stu(string banji,string xuehao,string name);
void setBanji(string baiji);
void setXuehao(string xuehao);
void setName(string name);
string getBanji();
string getXuehao();
string getName();
virtual void print();
virtual void show()=0;
~Stu(){};
};
#endif
Benke.h
#ifndef BENKE_H
#define BENKE_H
#include<string>
#include<iostream>
using namespace std;
#include "Stu.h"
class Benke:public Stu{
private:
string xueyuan;
public:
Benke(string banji,string xuehao,string name,string xueyuan);
void setXueyuan(string xueyuan);
string getXueyuan();
void print();
virtual void show();
~Benke(){};
};
#endif
Yanjiu.h
#ifndef YANJIU_H
#define YANJIU_H
#include <iostream>
#include<string>
using namespace std;
#include "Stu.h"
class Yanjiu:public Stu{
private:
string keti;
public:
Yanjiu(string banji,string xuehao,string name,string keti);
void setKeti(string keti);
string getKeti();
void print();
virtual void show();
~Yanjiu(){};
};
#endif
Stu.cpp
#include "Stu.h"
#include "main.h"
Stu::Stu(){
cout<<"编译时的多态~"<<endl;
}
Stu::Stu(string banji,string xuehao,string name){
//Stu();
this->banji=banji;
this->xuehao=xuehao;
this->name=name;
}
void Stu::setBanji(string baiji){
this->banji=banji;
}
void Stu::setXuehao(string xuehao){
this->xuehao=xuehao;
}
void Stu::setName(string name){
this->name;
}
string Stu::getBanji(){
return this->banji;
}
string Stu::getXuehao(){
return this->xuehao;
}
string Stu::getName(){
return this->name;
}
void Stu::print(){
cout<<"班级为:"<<banji<<" "<<"学号为:"<<xuehao<<" "<<"姓名为:"<<name<<" ;"<<endl;
}
Benke.cpp
#include "Benke.h"
Benke::Benke(string banji,string xuehao,string name,string xueyuan):Stu(banji,xuehao,name){
this->xueyuan=xueyuan;
}
void Benke::print(){
Stu::print();
cout<<"本科生-->"<<"学院为:"<<xueyuan<<endl;
}
void Benke::show(){
cout<<"本科生---纯虚函数的函数!"<<endl<<endl;
}
Yanjiu.cpp
#include "Yanjiu.h"
Yanjiu::Yanjiu(string banji,string xuehao,string name,string keti):Stu(banji,xuehao,name){
this->keti=keti;
}
void Yanjiu::print(){
Stu::print();
cout<<"研究生-->"<<"课题为:"<<keti<<endl;
}
void Yanjiu::show(){
cout<<"研究生---纯虚函数的函数!"<<endl<<endl;
}