繼承(inheritance)
可以理解為乙個類從另乙個類獲取成員變數和成員函式的過程。例如類b繼承於類a,那麼b就擁有a的成員變數和成員函式。
被繼承的類稱為父類或基類,繼承的類稱為子類或派生類。
使用繼承的好處還有什麼時候使用繼承
1) 當你建立的新類與現有的類相似,只是多出若干成員變數或成員函式時,可以使用繼承,這樣不但會減少**量,而且新類會擁有基類的所有功能。
2) 當你需要建立多個類,它們擁有很多相似的成員變數或成員函式時,也可以使用繼承。可以將這些類的共同成員提取出來,定義為基類,
定義方式為:
class 派生類名:[繼承方式] 基類名(父類);繼承方式包括 public(公有的)、private(私有的)和 protected(受保護的),此項是可選的,如果不寫,那麼預設為 private(私有的)或者protected。
例如://繼承
#include
using namespace std;
class point
void move(float xo,float yo)
float getx()
float gety()
private:
float x,y;
};class rectangle:public point
float getw()
float geth()
private:
float w,h;
};int main() 重點
1) public繼承方式
2) protected繼承方式
3) private繼承方式
基類中所有protected成員和private成員在派生類中可以被呼叫;
由此可見:
private 繼承限制太多,實際開發中很少使用,一般使用 public。
在建構函式中,子類無法取得父類的私有屬性,只能借助 父類的成員函式來間接訪問。,然後在子類呼叫父類public裡面的成員函式
類a為基類,類b繼承自類a,類c又繼承自類b,那麼類c也是類a的派生類,它們構成了多級繼承的關係
//多重繼承
#include
using namespace std;
class a
};class b
};class c:public a,privateb
};int main()
//私有繼承: public裡面的資料和函式可以訪問。private不能訪問,protected可以訪問:
//重點);
//私有繼承的派生類例項不能直接訪問父類的成員變數和函式,
過載函式:
過載函式;在乙個類中,有兩個名字相同的函式,函式名一樣,重而形成過載函式
函式的引數型別不一樣
int add(int x,int y)
flost add(float x,float y)
函式的引數個數不一樣
int add(int x,int y)
int add(int x,int y,int z)
//過載函式
#include
using namespace std;
class a
float add(double x,double y)
};int main()
//float型在c++裡面預設為double
特別注意:
#include
using namespace std;
class b1
};class b2
};class b3
};class c:public b3,public b2,public b1 //呼叫父類的建構函式,傳值
private: //派生類的私有物件成員
b1 memberb1;
b2 memberb2; //上到下的順序
b3 memberb3;
};int main()
//執行結果為
//建構函式的呼叫次序:1:按照建構函式的呼叫次序
//重點 :
c(int a,int b,int c,int d):b1(a),memberb2(d),memberb1(c),b2(b){} 呼叫父類的建構函式,傳值
//2:成員變數
變成類,按照順序執行
虛擬繼承,過載,隱藏
1.為什麼要引入虛擬繼承 虛擬繼承是多重繼承中特有的概念。虛擬基類是為解決多重繼承而出現的。如 類d繼承自類b1 b2,而類b1 b2都繼承自類a,因此在類d中兩次出現類a中的變數和函式。為了節省記憶體空間,可以將b1 b2對a的繼承定義為虛擬繼承,而a就成了虛擬基類。實現的 如下 class a ...
構造方法 繼承 過載
1.構造方法 構造方法是一種特殊的方法,方法名和類名相同,沒有返回值 構造方法 就是給類中的各屬性進行初始化 構造方法的特點 方法名與類名相同 沒有返回值這一功能 空參的構造方法 public dog 帶引數的構造方法 public dog string name 注意 每乙個類中都有乙個預設空參的...
繼承 過載 重寫
一 過載和重寫 過載 方法名相同,引數不同 引數型別或者引數個數 可以存在不同的返回值 重寫 1 方法名相同 2 引數相同 引數型別和引數個數 3 返回值型別為基本資料型別時 返回值型別需和父類相同。返回值為引用型別時 返回值型別相同或者返回值型別是父類返回值型別的子類 4 訪問修飾符相同或者比父類...