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 number
    char gender; // ‘F‘ for female, ‘M‘ for male
    int 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(); // 调用基类的PrintInfo
        cout << "Department:" << department << endl;
    }

    void SetInfo(const string &name_, const string &id_,
                 int age_, char gender_, const string & department_) {
        CStudent::SetInfo(name_, id_, age_, gender_); // 调用基类的SetInfo
        department = department_;
    }
};

int main()
{
    CUndergraduateStudnet s2;
    s2.SetInfo("Harry Potter", "115200", 20, ‘M‘, "CS");
    cout<< s2.GetName() << endl;
    s2.QualifiedForBaoyan();
    s2.PrintInfo();

    return 0;
}

执行结果如下:

时间: 2024-10-15 17:45:01

C++ 继承和派生 及 学生管理范例的相关文章

Python基础- 类和对象(使用、继承、派生、组合、接口、多态、封装、property、staticmethod、classmethod、反射、slots、上下文管理协议、元类)

标签: python对象 2017-07-01 16:28 79人阅读 评论(0) 收藏 举报  分类: python(11)  版权声明:本文为广大朋友交流学习,如有纰漏望不吝赐教,若存在版权侵犯请及时与我联系 目录(?)[+] 一.初识类和对象 在python3中类型就是类 先定义类在产生相对应的对象,也就是现有了概念再有了实体 class Garen: camp = 'Demacia' def attack(self): print('attack') 1.如何使用类 在python3:

学生管理之模板继承

一.母版提取 我们先看以下几个页面: 班级管理 学生管理 老师管理 你可以看出,除了每个红色框框以外,其他的地方都是一样的.这样我们就可以使用模板的功能,也就是只有部分地方需要填充. 母版提取: <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>Title</title> //############

Day17:类的继承、派生、组合和接口

一.类的继承.派生和组合 继承是一种创建新类的方式,在Python中,新类可以继承一个或多个父类,父类又可称为基类或者超类,新建的类称为派生类或子类. 在Python3中,所有类都默认继承object,都是新式类.在Python2中,有经典类和新式类.没有继承object类以及object的子类的类都是经典类. 1.继承 Python中类的继承分为:单继承和多继承 class ParentClass1: #定义父类 pass class ParentClass2: #定义父类 pass clas

Python基础(16)_面向对象程序设计(类、继承、派生、组合、接口)

一.面向过程程序设计与面向对象程序设计 面向过程的程序设计:核心是过程,过程就解决问题的步骤,基于该思想设计程序就像是在设计一条流水线,是一种机械式的思维方式 优点:复杂的问题的简单化,流程化 缺点:扩展性差 面向对象的程序设计:核心是对象,对象是特征(变量)与技能(函数)的结合体,是一种上帝式的思维方式 优点:解决了程序的扩展性 缺点:可控性差 二.类和对象 以游戏举例,基于面向对象设计一个款游戏:英雄联盟,每个玩家选一个英雄,每个英雄都有自己的特征和和技能,特征即数据属性,技能即方法属性,特

Day29:类的继承、派生、组合和接口

一.类的继承.派生和组合 继承是一种创建新类的方式,在Python中,新类可以继承一个或多个父类,父类又可称为基类或者超类,新建的类称为派生类或子类. 在Python3中,所有类都默认继承object,都是新式类.在Python2中,有经典类和新式类.没有继承object类以及object的子类的类都是经典类. 1.继承 Python中类的继承分为:单继承和多继承 class ParentClass1: #定义父类 pass class ParentClass2: #定义父类 pass clas

c++第四次实验-继承与派生

一.问题及代码 /* * 文件名称:学生成绩 * 作 者:刘晓龙 * 完成日期:2016年5月6日 * 版 本 号: * 对任务及求解方法的描述部分:继承与派生 * 输入描述:输入学生信息和班长信息 * 问题描述:打印学生信息和班长信息 * 程序输出:输出学生的信息和班长的信息 * 问题分析:运用继承和派生 * 算法设计:无 */ #include <iostream> #include <string> using namespace std; class Stu //声明基类

C++奇淫技巧,程序员为啥天天学继承与派生,真的有这么难吗

继承与派生 1.1继承与派生的概念 在C++中,可重用性是通过继承这一机制来实现的.所谓继承,就是在一个已存在的类的基础上建立一个新的类.已存在的类称为基类,新建立的类成为派生类.(与对象的复制做区别)一个新类从已有的类那里获得其已有特性,这种现象称为类的继承. C++奇淫技巧,程序员为啥天天学继承与派生,真的有这么难吗派生类继承了基类的所有数据成员和成员函数,并可以对成员作必要的增加或调整.创一个小群,供大家学习交流聊天如果有对学C++方面有什么疑惑问题的,或者有什么想说的想聊的大家可以一起交

类的继承、派生、组合、菱形的继承、多态

类的继承 继承是一种新建的类的方式,新建的类成为子类,被继承的类称为父亲 继承的特性是:子类会遗传父亲的属性 继承是类与类之间的关系 使用继承目的,可以减少代码的咒余 在python中,父类和子类只有在继承的时候才会产生 继承是为了拿到父类的所有东西 class Parent_Foo: def __init__(self,first_name,money,car,house) self.first_name = first_name self.car = car self.house =hous

程序设计实习MOOC / 继承和派生——编程作业 第五周程序填空题1

描述 写一个MyString 类,使得下面程序的输出结果是: 1. abcd-efgh-abcd- 2. abcd- 3. 4. abcd-efgh- 5. efgh- 6. c 7. abcd- 8. ijAl- 9. ijAl-mnop 10. qrst-abcd- 11. abcd-qrst-abcd- uvw xyz about big me take abcd qrst-abcd- 要 求:MyString类必须是从C++的标准类string类派生而来.提示1:如果将程序中所有 "My