欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > c/c++ >内容正文

c/c++

C++ 继承和派生 及 学生管理范例

发布时间:2025/6/17 c/c++ 52 豆豆
生活随笔 收集整理的这篇文章主要介绍了 C++ 继承和派生 及 学生管理范例 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1、概念

继承:在定义一个新的类B时,如果该类与某个已知类A相似(指的是B拥有A的全部特点),那么就可以把A作为一个基类,而把B作为一个派生类(也称子类)。

  • 派生类是通过对基类进行修改和扩充得到的。在派生类中,可以扩充新的成员变量和成员函数。
  • 派生类一经定义后,可以独立使用,不依赖于基类。
  • 派生类拥有基类的全部成员函数和成员变量,不论是private,protected 还是 public
  • 在派生类的各个成员函数中,不能访问基类中的private成员。

2、需要继承机制的例子 - 学生管理系统

所有的学生都有的共同属性:

  • 姓名
  • 学号
  • 性别
  • 成绩

所有的学生都有的共同方法(成员函数)

  • 是否该留级
  • 是否该奖励

而不同的学生,又有各自不同的属性和方法

  • 研究生:有导师和系
  • 大学生:有系
  • 中学生:有竞赛特长加分

3、派生类的写法

class 派生类名 : public 基类名 {};

 

4、派生类对象的内存空间

派生类对象的体积,等于基类对象的体积,再加上派生类对象自己的成员变量的体积。

在派生类对象中,包含着基类对象,而且基类对象的存储位置位于派生类对象新增的成员

变量之前。如下代码示:

#include <iostream> #include <string.h>using namespace std;class CBase {int v1, v2; };class CDerived : public CBase {int v3; };int main() {printf("sizeof(CDerived) = %d\n", sizeof(CDerived));return 0; }

输出的结果是:12

 

5、继承实例程序:学籍管理

#include <iostream> #include <string.h>using namespace std;class CStudent {private:string name;string id; // student numberchar gender; // 'F' for female, 'M' for maleint age;public:void PrintInfo() {cout << "name: " << name << endl;cout << "id: " << id << endl;cout << "gender: " << gender << endl;cout << "age: " << age << endl;}void SetInfo(const string & name_, const string & id_,int age_, char gender_) {name = name_;id = id_;age = age_;gender = gender_;}string GetName() { return name; } };class CUndergraduateStudnet : public CStudent { private:string department; // 学生所属的系public:void QualifiedForBaoyan() {cout << "qualified for baoyan" << endl;}void PrintInfo() {CStudent::PrintInfo(); // 调用基类的PrintInfocout << "Department:" << department << endl;}void SetInfo(const string &name_, const string &id_,int age_, char gender_, const string & department_) {CStudent::SetInfo(name_, id_, age_, gender_); // 调用基类的SetInfodepartment = department_;} };int main() {CUndergraduateStudnet s2;s2.SetInfo("Harry Potter", "115200", 20, 'M', "CS");cout<< s2.GetName() << endl;s2.QualifiedForBaoyan();s2.PrintInfo();return 0; }

执行结果如下:

转载于:https://www.cnblogs.com/aqing1987/p/4351932.html

总结

以上是生活随笔为你收集整理的C++ 继承和派生 及 学生管理范例的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。