1 繼承概念
1)繼承是類之間定義的一種重要關係;
2)基本語法:class child : public parent1,public parent2;
3)parent稱基類(父類),child稱派生類(子類)
4) 繼承方式:public,private,protected.
5)重要說明:
a)子類擁有父類的所有成員變數和成員函式;
b)子類可以擁有父類沒有的方法和屬性;
c)子類就是一種特殊的父類;
d)子類物件可以當作父類物件使用, 即可以使用父類的成員變數和成員函式;
2 子類的訪問控制
1)子類繼承了基類的全部成員變數和成員方法(除了構造和析構),但是這些成員的訪問屬性,在派生過程中是可以調整的。
2)不同的繼承方式會改變繼承成員的訪問屬性
a) public繼承:父類成員在子類中保持原有訪問級別
b) private繼承:父類成員在子類中變為private成員
c) protected繼承:父類中public成員會變成protected,父類中protected成員仍然為protected,父類中private成員仍然為private。
3)「三看」原則
a)看呼叫語句,這句話寫在子類的內部、外部;
b)看子類如何從父類繼承(public、private、protected)
c)看父類中的訪問級別(public、private、protected)
4)訪問級別設定的原則
a)需要被外界訪問的成員直接設定為public
b)能在當前類中訪問的成員設定為private
c)只能在當前類和子類中訪問的成員設定為protected,protected成員的訪問許可權介於public和private之間。
3 繼承中的構造和析構
1)型別相容性原則
a)指在需要基類物件的任何地方,都可以使用公有派生類(子類)的物件來替代。
b)子類物件可以當作父類物件使用;
c) 子類物件可以直接賦值給父類物件
d) 子類物件可以直接初始化父類物件
e)父類指標可以直接指向子類物件
f)父類引用可以直接引用子類物件
#include #include using namespace std;
class parent03
void printp()
void printc()
int main()
2)構造和析構呼叫原則
a) 子類物件在建立時會首先呼叫父類的建構函式
b) 父類建構函式執行結束後,執行子類的建構函式;
c) 當父類的建構函式有引數時,需要在子類的初始化列表中顯示呼叫父類建構函式;
d) 析構函式呼叫的先後順序與建構函式相反;
#include using namespace std;
class parent
;class parent : public object
void howtoprint2(parent &base)
void main()
//函式呼叫
howtoprint(&p1);
howtoprint(&c1);
howtoprint2(p1);
howtoprint2(c1);
cout<<"hello..."<五 虛繼承虛繼承解決的是多個父類有共同祖先的問題,可以防止出現二義性。
1 如果乙個派生類從多個基類派生,而這些基類又有乙個共同的基類,則在對該基類中宣告的名字進行訪問時,可能產生二義性。
2 如果在多條繼承路徑上有乙個公共的基類,那麼在繼承路徑的某處匯合點,這個公共基類就會在派生類的物件中產生多個基類子物件。
3 要使這個公共基類在派生類中只產生乙個子物件,必須對這個基類宣告為虛繼承,使這個基類成為虛基類。
4 虛繼承宣告使用關鍵字 virtual
#include using namespace std;
class b
;class b1 : virtual public b
;class b2 : virtual public b
;class c : public b1, public b2
;void main()
c 繼承和派生
通常子類不加修飾的延續父類的特徵,我們把它叫做繼承 而子類在延續父類特徵的基礎上又新增自己的新特徵,叫做派生。擁有乙個基類的繼承是單一繼承,擁有多個基類的繼承是多重繼承。class 派生類名 派生型別 基類名 注 括號內是派生類自己的成員和成員函式。乙個類的私有成員只能被它的成員函式和友員訪問,不能...
C 繼承和派生
在c 語言中,乙個 派生類可以從乙個 基類派生,也可以從多個基類派生。從乙個基類派生的繼承稱為單繼承 從多個基類派生的繼承稱為 多繼承。派生類的定義格式 單繼承的定義格式如下 1 2 3 4 class 派生類名 繼承方式 基類名 public 表示公有繼承 private 表示私有繼承 prote...
C 繼承和派生
二.派生類的建構函式和析構函式 繼承,就是從先輩處得到屬性和行為的特徵。類的繼承就是新的類從已有的類那裡得到已有的特性。從另乙個角度來看問題,從已有類產生新類的過程就是類的派生。基類和派生類的關係,可以表述為 派生類是基類的具體化,而基類是派生類的抽象。格式為 class 派生類名 繼承方式 基類 ...