c++面向程序对象 学生类的综合作业

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羽墨青

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值