1. 乙個包含多級派生/構造、析構函式的綜合例項:
#include
using namespace std;
class a ;
~a() //析構函式,關於析構函式只做簡單介紹
void f1()
int i;
protected:
void f2()
int j;
private:
int k; };
class b: public a //定義公用派生類b
n=bn; };
~b()
void f3()
protected:
int m;
private:
int n; };
class c: public b ;
~c()
void f4()
private:
int p; };
int main()
多級派生的許可權總結:
public:public公用繼承後仍是public許可權,保護繼承後變為protected許可權,私有繼承後是private許可權。
protected:protected公用繼、保護承後仍是protected許可權。以此類推…
特別說明:protected的意思是在class內部才能使用,不能外部呼叫,比如class a乙個protected資料j,不能用a1.j去呼叫,要使用j必須在class a內定義乙個成員函式去呼叫。
另外對於派生類物件的釋放,先執行派生類的析構函式,在執行其基類的析構函式。本例中執行析構函式依次為:
c, b, a //釋放c1空間
b, a //釋放b1空間
a //釋放a1空間
2. 上例中沒有包含類子物件,派生類函式子物件的建構函式寫法如下:
student1(int num, string name, int num1, string name1 ):student(num, name), monitor(num1, name1){} //monitor為student類型別,建構函式初始化時傳入引數即可
3. 多重繼承派生的建構函式,寫法如下:
class graduate: public teacher, public student //一名研究生既是教師又是學生,引進兩個基
//一些引數是共用的 ……
};
4. 虛基類
如果乙個派生類有多個直接基類,而這些直接基類又有乙個共同的基類,則在最終的派生類中會保留該間接共同基類資料成員的多份同名成員。如下圖所示。引用這些同名成員時,必須在派生類物件名後增加直接基類名,以避免產生二義性,使其唯一地標識乙個成員,如c1.a::display()。
c++提供虛基類(virtual base class)的方法,使得在繼承間接共同基類時只保留乙份成員。例如:
class person //共同基類
…… };
class teacher: virtual public person //將person引入為虛基類
…… };
class student: virtual public person //將person引入為虛基類
…… };
class graduate: public teacher, public student //引入兩個直接基類
//注意此時還要包含person,與小節3的例子不同 ……
};
5. 基類與派生類的轉換
派生類可以直接賦值給基類,反過來不行。例如
student a1(…);
graduate b1(…);
student &a2 = a1; //定義基類物件的引用a2,並用a1對其初始化
a2 = b1; //可以直接將b1賦值給a2
6. 繼承與組合
在乙個類中以另外乙個類的物件作為資料成員,稱為類的組合。例如:
class teacher
class birthdate
class professor: public teacher
可見通過繼承teacher引進成員和通過組合引進成員,都能有效地利用已有類的資源。不同的是,繼承是包含關係,而組合是屬性關係。
c 類的繼承與派生
一 基本概念 1 類的繼承,是新的類從已有類那裡得到已有的特性。或從已有類產生新類的過程就是類的派生。原有的類稱為基類或父類,產生的新類稱為派生類或子類。2 派生類的宣告 class 派生類名 繼承方式 基類名1,繼承方式 基類名2,繼承方式 基類名n 3 乙個派生類可以同時有多個基類,這種情況稱為...
C 類的繼承與派生
繼承是物件導向程式設計中最重要的乙個概念。繼承允許我們根據乙個類來定義另乙個類,達到了 功能重用效果。當建立乙個類時,如果待建立的類與另乙個類存在某些共同特徵,程式設計師不需要全部重新編寫成員變數和成員函式,只需指定繼承另乙個類即可,被繼承的類稱為基類或父類,新建的類稱為派生類或子類。定義乙個派生類...
C 類的繼承與派生
繼承是物件導向程式設計中最重要的乙個概念。繼承允許我們根據乙個類來定義另乙個類,達到了 功能重用效果。當建立乙個類時,如果待建立的類與另乙個類存在某些共同特徵,程式設計師不需要全部重新編寫成員變數和成員函式,只需指定繼承另乙個類即可,被繼承的類稱為基類或父類,新建的類稱為派生類或子類。定義乙個派生類...