《实用C++》第39课 类的继承与派生

本文转载自:VC驿站

https://www.cctry.com/thread-290039-1-1.html

1、为什么要进行类的继承与派生?
关于这个话题其实在之前的课程中有给大家介绍过,就在《实用C++》第29课 面向对象的程序设计的第⑤个知识点:https://www.cctry.com/thread-289448-1-1.html
继承与派生是C++编程过程中经常用到的一个非常重要的功能。可以复用以前开发好的功能,站在巨人的肩膀上,节省时间,提高开发效率。不用重复造轮子了。这就是C++面向对象编程中的继承与派生。
例如,咱们之前定义的学生类 CStudent,里面包含了一些普通学生的信息:姓名、学号、性别、年龄。那么接下来呢,我要定义一个小学生的类,又要定义一个中学生的类,还要定义一个大学生的类。不管是小学生、中学生还是大学生,肯定也包含学生的姓名、学号、性别、年龄等基本信息,如果都分别新定义一个类的话,可不可以?答案是当然可以的。但是这样跟之前的学生类 CStudent 貌似有点重复,同样的代码写了很多次。所以,我们可以通过C++中的继承的机制来解决这个问题。

2、继承举例:
既然 CStudent 学生类的信息可以作为所有学生的基础信息,任何一个学生都包含姓名、学号、性别、年龄等基本信息。那么我们在定义小学生、中学生或者大学生的类的时候就可以用 CStudent 作为父类进行派生子类,例如:

#include "Student.h"
class CXiaoStudent : public CStudent
{
public:
    int yuwen_score;
    int shuxue_score;
    int english_score;
};

class CZhongStudent : public CXiaoStudent
{
public:
    int wuli_score;
    int huaxue_score;
};

其中 CXiaoStudent、CZhongStudent 是新定义的小学生、中学生的类名字,: public 之后跟着的是他的父类,也就是从哪个类继承过来的,咱们之前的类定义都是留空,这里面应该设计到继承关系,所以要加上,不然不知道从哪里继承过来的。这里面的 public 是指的继承方式,即:父类中的成员在子类中的继承方式,一般也包含三种:public公有继承、private私有继承、protedted受保护继承。这个咱们下个知识点讨论,这里面先举个小例子,看看怎么用:

CZhongStudent zhong_1;
zhong_1.wuli_score = 90; //调用本类的成员变量
zhong_1.yuwen_score = 100; //调用父类的成员变量
zhong_1.age = 15; //调用爷爷类的成员变量

以上调用都是可以的,怎么样,大家看到了继承的方便之处了吧?

3、继承的方式:
①、public公有继承:
父类的公有成员和受保护成员在子类中保持原有的访问属性,其私有成员仍为父类私有,在子类中是访问不了的,即使通过子类的共有成员函数也访问不了;
②、private私有继承:
父类的公有成员和受保护的成员在子类中变成了私有成员,其私有成员仍为父类私有, 在子类中是访问不了的,即使通过子类的共有成员函数也访问不了;
③、protected受保护继承:
父类的公有成员和受保护的成员在子类中变成了受保护成员,其私有成员仍为父类私有, 在子类中是访问不了的,即使通过子类的共有成员函数也访问不了;

示例代码如下,具体详细敲代码过程及讲解详见视频教程!

#include "Student.h"
class CXiaoStudent : public CStudent
{
public:
    int yuwen_score;
    int shuxue_score;
    int english_score;

private:
    int flag_private;

protected:
    int flag_protected;
};

class CZhongStudent : public CXiaoStudent
{
public:
    int wuli_score;
    int huaxue_score;

public:
    int get_flag_1()
    {
        //return flag_private;
        return flag_protected;
    }
};


备注:现实编程过程中 public 公有继承是使用最广泛的,其他两种使用的不是很多。所以 public 公有继承这块大家要熟练掌握。
总结为一张图:
《实用C++》第39课 类的继承与派生 

4、小作业:
按照继承的规则,既然父类中的private私有成员不能在子类中直接使用,那么有没有什么办法能解决这个问题呢?让子类可以直接或者间接的使用父类中的private私有成员呢?大家想想?
比如上面代码中的 CZhongStudent 类的 get_flag_1 函数,如何能获取到 flag_private 的值呢?大家课后想一想,并且自己实现一下试试!

第39课视频教程下载地址:

https://www.cctry.com/thread-290039-1-1.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值