小白學習大型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++教程

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