一、问题及代码
- /*
- * 文件名称:学生类
- * 作 者:夏廷辉
- * 完成日期:2016 年 4 月 29 日
- * 版 本 号:vc6.0
- * 对任务及求解方法的描述部分: 对继承和派生的运用
- * 输入描述:输入学生姓名、学号、住址、年龄
- * 问题描述:清楚继承和派生的关系和调用方法
- * 程序输出:如下
- * 问题分析:略
- * 算法设计:略
- */
- #include<iostream>
- #include<string>
- using namespace std;
- class Stu //声明基类
- {
- public:
- Stu(int n, string nam ); //基类构造函数
- void display( ); //成员函数,输出基类数据成员
- protected: //(*)访问权限为保护型的数据成员
- int num; //学生学号
- string name; //学生姓名
- };
- Stu::Stu(int n,string nam):num(n),name(nam){}
- void Stu::display()
- {
- cout<<"学号:"<<num<<endl;
- cout<<"姓名:"<<name<<endl;
- }
- class StuDetail: public Stu //声明派生类StuDetail
- {
- public:
- //学生nam,学号n,a岁,家住ad,他的班长是nam1,学号n1
- StuDetail(int n, string nam,int a, string ad,int n1, string nam1); //派生类构造函数
- void show( ); //成员函数,输出学生的信息
- void show_monitor( ); //成员函数,输出班长信息
- private:
- Stu monitor; //学生所在班的班长,班长是学生,是Stu类的成员
- int age; //学生年龄
- string addr; //学生的住址
- };
- StuDetail::StuDetail(int n, string nam,int a, string ad,int n1, string nam1):Stu(n,nam),monitor(n1,nam1)
- {
- addr=ad;
- age=a;
- }
- void StuDetail::show()
- {
- cout<<"学生信息:"<<endl;
- display();
- cout<<"年龄:"<<age<<endl;
- cout<<"住址:"<<addr<<endl;
- }
- void StuDetail::show_monitor()
- {
- cout<<"班长信息:"<<endl;
- monitor.display();
- }
- int main( )
- {
- //学生张三,10010号,19岁,家住江西南昌,他的班长是李四,学号10001
- StuDetail s(10010,"张三",19,"江西南昌",10001,"李四");
- s.show( ); //输出学生信息
- s.show_monitor( ); //输出班长信息
- return 0;
- }
二、运行结果
三、心得体会
写的时候逻辑不是很清晰,经过看书和请教室友后才写出来,所以我会多了解有关继承和派生的。
四、知识点总结
1、公有继承下,类公有成员由基类的公有成员和新增的派生类公有成员所组成;
2、派生类私有成员为新增的派生类私有成员;
3、派生类保护成员由基类的保护成员和新增的派生类保护成员所组成。