
编写学生 CStudent 、小学生 CPrimaryStudent 、中学生 CMiddlStudent 、大学生 CCollegeStudent 类,它们依次派生学生有学号、姓名、性别、年龄等4个基础数据成员,小学生有是否是少先队员的数据;中学生有是否是共青团员数据;大学生有学分数据;输入3个学生的四个基本数据、是否少先队员、是否共青团员和学分数据,用3个 CStudent 指针对象来实现,通过年龄自动生成各学生对象,年龄段小学生6—11)中学生(12—17 大学生(18—22)输出3个学生倡息,并自动输出当前学生是小学生,中学生,大学生的信息。
对外接口函数id input(int id,string name, char sex,int age);void print
#include <iostream>
#include <string>
using namespace std;
class CStudent {
public:
virtual ~CStudent()
{
//
}
virtual bool IsShaoXianDuiYuan() = 0;
virtual bool IsGongQingTuanYuan() = 0;
virtual bool ExistXueFen(int &v) = 0;
void input(int id,string name, char sex,int age)
{
mId = id;
mName = name;
mSex = sex;
mAge = age;
}
virtual void print() = 0;
public:
int mId;
string mName;
char mSex;
int mAge;
};
class CPrimaryStudent : public CStudent {
public:
bool IsShaoXianDuiYuan()
{
return mShaoXianDuiYuan;
}
bool IsGongQingTuanYuan()
{
return false;
}
bool ExistXueFen(int &v)
{
return false;
}
void print()
{
cout << "CPrimaryStudent : id = " << mId
<< ", name = " << mName
<< ", sex = " << mSex
<< ", age = " << mAge
<< ", shaoxianduiyuan = " << mShaoXianDuiYuan
<< endl;
}
public:
bool mShaoXianDuiYuan;
};
class CMiddlStudent : public CStudent {
public:
bool IsShaoXianDuiYuan()
{
return false;
}
bool IsGongQingTuanYuan()
{
return mGongQingTuanYuan;
}
bool ExistXueFen(int &v)
{
return false;
}
void print()
{
cout << "CMiddlStudent : id = " << mId
<< ", name = " << mName
<< ", sex = " << mSex
<< ", age = " << mAge
<< ", gongqingtuanyuan = " << mGongQingTuanYuan
<< endl;
}
public:
bool mGongQingTuanYuan;
};
class CCollegeStudent : public CStudent {
public:
bool IsShaoXianDuiYuan()
{
return false;
}
bool IsGongQingTuanYuan()
{
return false;
}
bool ExistXueFen(int &v)
{
v = mXueFen;
return true;
}
void print()
{
cout << "CCollegeStudent : id = " << mId
<< ", name = " << mName
<< ", sex = " << mSex
<< ", age = " << mAge
<< ", xuefen = " << mXueFen
<< endl;
}
public:
int mXueFen;
};
int main(void)
{
CStudent *p[3] = {nullptr};
// 读取
for (int i = 0; i < 3; ++i) {
int id;
string name;
char sex;
int age;
cin >> id >> name >> sex >> age;
if (age >= 6 && age <= 11) {
CPrimaryStudent *s = new CPrimaryStudent();
cin >> s->mShaoXianDuiYuan;
p[i] = s;
} else if (age >= 12 && age <= 17) {
CMiddlStudent *s = new CMiddlStudent();
cin >> s->mGongQingTuanYuan;
p[i] = s;
} else if (age >= 18 && age <= 22) {
CCollegeStudent *s = new CCollegeStudent();
cin >> s->mXueFen;
p[i] = s;
} else {
continue;
}
p[i]->mId = id;
p[i]->mName = name;
p[i]->mSex = sex;
p[i]->mAge = age;
}
// 打印
for (int i = 0; i < 3; ++i) {
if (p[i] == nullptr) {
continue;
}
p[i]->print();
}
// 释放
for (int i = 0; i < 3; ++i) {
if (p[i] == nullptr) {
continue;
}
delete p[i];
}
return 0;
}