学生派生类 (12 分)

该博客介绍了如何在C++中根据已有的`Student`类定义一个派生类`Student1`,并使用构造函数初始化成员变量,包括`num`、`name`、`sex`、`age`和`address`。示例代码展示了如何创建`Student1`对象并展示其信息,符合指定的输出格式。

学生派生类 (12 分)

根据所给的类Student定义其派生类,并利用构造函数进行数据初始化,使程序能按照"样例"的格式进行输出

类定义:


#include <iostream> #include<string> using namespace std; class Student {public: Student(int n,string nam,char s ) {num=n; name=nam; sex=s; } ~Student( ) { } protected: int num; string name; char sex ; }; /* 请在这里添加派生类定义 */

裁判测试程序样例:


int main( ) {Student1 stud1(10010,"Wang-li",'f',19,"115 Beijing Road,Shanghai"); Student1 stud2(10011,"Zhang-fun",'m',21,"213 Shanghai Road,Beijing"); stud1.show( ); stud2.show( ); return 0; }

输出样例:

num: 10010
name: Wang-li
sex: f
age: 19
address: 115 Beijing Road,Shanghai

num: 10011
name: Zhang-fun
sex: m
age: 21
address: 213 Shanghai Road,Beijing

#include <iostream>
#include<string>
using namespace std;
class Student
{
public:
    Student(int n, string nam, char s)
    {
        num = n;
        name = nam;
        sex = s;
    }
    ~Student() { }
protected:
    int num;
    string name;
    char sex;
};
class Student1 : public Student
{
protected:
    int age;
    string address;
public:
    Student1(int n, string nam, char s, int age, string address) :Student(n, nam, s)
    {
        this->age = age;
        this->address = address;
    }
    void show()
    {//num : 10011
        cout << "num" << " " <<":" << " " << num << endl;
        cout << "name" << " " << ":" << " " << num << endl;
        cout << "sex" << " " <<":" << " " << num << endl;
        cout << "age" << " " <<":" << " " << num << endl;
        cout << "address" << " " <<":" << " " << num << endl;
        cout << endl;
    }
};
int main()
{
    Student1 stud1(10010, "Wang-li", 'f', 19, "115 Beijing Road,Shanghai");
    Student1 stud2(10011, "Zhang-fun", 'm', 21, "213 Shanghai Road,Beijing");
    stud1.show();
    stud2.show();
    return 0;
}

PTA(Programming Teaching Assistant)平台经常用于学生练习编程题目的场景,在此背景下,“学生”类可以作为一个基础类,而“派生类”则是从这个基础类中继承并扩展出新的特性或功能的子类。 假设我们有一个基本的学生类 `Student` ,其中包含了一些通用属性如学号、姓名等基本信息以及一些简单的行为方法例如获取成绩等。那么基于该类我们可以创建一个更具体的派生类比如 `GraduateStudent` (研究生),它除了拥有普通学生的特征外还需要记录研究方向或者发表论文的数量等内容;再比如另一个派生类 `UndergraduateStudent` (本科生),也许需要管理选修课程列表之类的信息。 以下是关于如何设计这样一个继承体系的大致框架: ```c++ class Student { protected: string id; // 学号 string name; // 姓名 public: virtual void showInfo() = 0; }; class UndergraduateStudent : public Student{ private: vector<string> courses; // 记录所选课程 public: void addCourse(string course){ this->courses.push_back(course); } void showInfo(){ cout << "我是本科生:" +this->name+ ", 我的学号是:" +this->id+", 我选择了以下课程:"; for(auto &course:this->courses) cout<<course<<" "; cout<<endl; } }; class GraduateStudent : public Student{ private: string researchDirection; // 研究方向 public: GraduateStudent(string rd):researchDirection(rd){} void showInfo(){ cout << "我是研究生:" +this->name+ ", 我的研究方向是:" +this->researchDirection<< endl; } }; ``` 上述代码示例展示了两个别针对本科及研究生的不同需求定制化的派生类,并通过各自特有的成员变量存储了额外的数据信息。同时我们也看到了他们实现了共同基类中的纯虚函数showInfo(), 这一过程也体现了多态性的应用价值所在 - 即便最终对象属于哪一个确切类型未知的情况下依旧能够调用相应版本的功能实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值