C++ 继承和派生
C++ 中的繼承是類與類之間的關系,是一個很簡單很直觀的概念,與現實世界中的繼承類似,例如兒子繼承父親的財產。
繼承(Inheritance)可以理解為一個類從另一個類獲取成員變量和成員函數的過程。例如類 B 繼承于類 A,那么 B 就擁有 A 的成員變量和成員函數。
在C++中,派生(Derive)和繼承是一個概念,只是站的角度不同。繼承是兒子接收父親的產業,派生是父親把產業傳承給兒子。
被繼承的類稱為父類或基類,繼承的類稱為子類或派生類。“子類”和“父類”通常放在一起稱呼,“基類”和“派生類”通常放在一起稱呼。
派生類除了擁有基類的成員,還可以定義自己的新成員,以增強類的功能。
兩種典型的使用繼承的場景:
1 當你創建的新類與現有的類相似,只是多出若干成員變量或成員函數時,可以使用繼承,這樣不但會減少代碼量,而且新類會擁有基類的所有功能。
2 當你需要創建多個類,它們擁有很多相似的成員變量或成員函數時,也可以使用繼承。可以將這些類的共同成員提取出來,定義為基類,然后從基類繼承,既可以節省代碼,也方便后續修改成員。
下面我們定義一個基類 People,然后由此派生出 Student 類:
#include<iostream> using namespace std;//基類 Pelple 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本例中,People 是基類,Student 是派生類。Student 類繼承了 People 類的成員,同時還新增了自己的成員變量 score 和成員函數 setscore()、getscore()。這些繼承過來的成員,可以通過子類對象訪問,就像自己的一樣。
請認真觀察代碼第21行:
class Student: public People這就是聲明派生類的語法。class 后面的“Student”是新聲明的派生類,冒號后面的“People”是已經存在的基類。在“People”之前有一關鍵宇 public,用來表示是公有繼承。
繼承的語法為:
class 派生類名:[繼承方式] 基類名{派生類新增加的成員 };繼承方式包括 public(公有的)、private(私有的)和 protected(受保護的),此項是可選的,如果不寫,那么默認為 private。
總結
- 上一篇: Pycharm 字体大小及背景颜色的设置
- 下一篇: Sublime Text 3 详细安装教