小白学习大型C++源码项目系列之继承和派生

什么是继承

继承(Inheritance)可以理解为一个类从另一个类获取成员变量和成员函数的过程。
派生(Derive)和继承是一个概念,只是站的角度不同。
继承是儿子接收父亲的产业,派生是父亲把产业传承给儿子。
被继承的类称为父类或基类,继承的类称为子类或派生类。
“子类”和“父类”通常放在一起称呼,“基类”和“派生类”通常放在一起称呼。

继承的使用场景

  1. 当你创建的新类与现有的类相似,只是多出若干成员变量或成员函数时,可以使用继承,
    这样不但会减少代码量,而且新类会拥有基类的所有功能。

  2. 当你需要创建多个类,它们拥有很多相似的成员变量或成员函数时,也可以使用继承。
    可以将这些类的共同成员提取出来,定义为基类,然后从基类继承,既可以节省代码,也方便后续修改成员。
    这些都是大型C++工程的重要组件。

C++继承的语法

class 派生类名:[继承方式] 基类名{
    派生类新增加的成员
};

继承方式限定了基类成员在派生类中的访问权限,包括 public(公有的)、private(私有的)和 protected(受保护的)。

C++继承代码实践

#include <iostream>

using namespace std;

class People{
public:
    void setname(char *name);
    void setage(int age);
    char *getname();
    int getage();

private:
    char *m_name;
    int m_age;
};

void People::setname(char *name) {m_name = name;}
void People::setage(int age) {m_age = age;}
char* People::getname() { return m_name;}
int People::getage() { return m_age;}

// 派生类 student
class Student: public People{
public:
    void setscore(float score);
    float getscore();

private:
    float m_score;
};

void Student::setscore(float score) {m_score = score;}
float Student::getscore() { return m_score;}


int main() {
    Student stu;
    stu.setname("小明");
    stu.setage(16);
    stu.setscore(95.5f);
    cout << stu.getname() << "的年龄是 " << stu.getage() << ", 成绩是 "<< stu.getscore()<<endl;
    
    return 0;
}
// 小明的年龄是 16, 成绩是 95.5

参考C语言中文网C++教程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章