C++面向程序对象定义类综合练习
前言:今来综合学习之前讲过的类定义吧
上课啦!搬起小板凳来听课了!别忘了带上小本本耶!
题目 :
1、定义基类People,包含:私有数据成员ID(身份证号 int类型)和Name(姓名 string);
构造函数(带默认参数);
共有成员函数Input(不带参的虚函数)用于实现信息输入;
共有成员函数Output(不带参的虚函数)用于实现身份证号和姓名的输出;
定义纯虚函数fun,返回类型int
2、定义派生类学生类Student,公有继承,基类为People;
新增私有数据成员stuNo(学号,int型);
构造函数用于实现对数据成员的初始化赋值;
公有成员函数Input用于实现对学生的数据成员的输入;
公有成员函数Output,用于实现输出学生的身份证号、姓名和学号;
公有成员函数fun用于实现输出“今天要上面向对象课!”,显示贡献值;
3、主函数中,定义相关变量,实现输入学生信息,并调用函数实现对学生信息的输出和对fun函数的调用,要求体现运行时多态性。
code:
#include <iostream>
#include <string>
using namespace std;
class People//定义基类People
{
private://私有成员
int ID;
string Name;
public:
People(int id = 101 ,string name = "zhangsan"):Name(name)
{
this -> ID=id;
}
virtual void Input()//定义虚函数Input和Output,纯虚函数fun
{
cout << "请输入ID:";cin >> ID ;
cout << "请输入Name:";cin >> Name;
}
virtual void Output()
{
cout << "ID:" << ID << "\nName:" <<Name;
}
virtual int fun()
{
return 10;
}
};
class Student:public People//从People里派生出来的学生类Student
{
private:
int stuNo;
public:
Student(int stuno = 123,int id = 101,string name = "zhangsan"):People(id,name)
{
this->stuNo = stuno;
}
void Input()
{
People::Input();
cout << "请输入stuNo:";
cin >> stuNo;
}
virtual void Output()
{
People::Output();
cout << "\nstuNo:" << stuNo;
fun();
}
virtual int fun()
{
cout << "今天要上面向对象课!";
return 15;//贡献值
}
};
int main()
{
People *p;//定义指针类型
int n;
cout << "请输入要创建的对象个数:";
cin >> n ;
int sum = 0;//计算贡献值的总和
int choose;//选择People还是Student
for (int i=0; i<n ; i++)
{
cout << "People1, Stu2:";
cin >> choose;
switch(choose )
{
/*在这里说明一下,不懂的“小友猿”可要拿起本本记一下咯,
定义new指针初始化是为了数据动态存储*/
case 1:p=new People;p->Input();sum += p->fun();break;
case 2:p=new Student;p->Input();sum += p->fun();break;
default:break;
}
}
cout << "总贡献值:" << sum <<endl;
return 0;
}
今天咱就学到这里啦,不懂得小猿子要大胆提出问题所在你我共同进步!
作者:Ymoq
修订时间:2022-11-10