C C 類和物件 基類和派生類

2022-08-13 06:57:13 字數 1825 閱讀 9236

子類物件包含多個組成部分(也就是多個子物件);

含有派生類自己定義的成員變數、成員函式的子物件;

該派生類所繼承的基類的子物件,這個子物件包含的是基類中定義的成員變數、成員函式(派生類物件含有基類對應的組成部分);

#include using namespace std;

class father

virtual ~father()

private:

int m_values;

};class son : public father

~son()

public:

int m_value_b;

};int main()

base

father: base是father的直接基類

son:base是sone的間接基類

繼承關係一直傳遞,構成了一種繼承鏈,最終的結果是son會包含它的直接基類的成員以及每個間接基類的成員

father這個類就是既當父類又當子類;

#include using namespace std;

class base

; ~base()

;};class father: public base

virtual ~father()

private:

int m_values;

};class son : public father

~son()

public:

int m_value_b;

};int main()

final:c++11中引入,加到基類後面,使其無法被繼承;

class base final

; ~base()

;};class father

//class father : public base 錯誤

virtual ~father()

private:

int m_values;

};

基類物件能獨立存在,也能作為派生類物件的一部分存在

father* father = new son(); //積累指標指向乙個派生類物件	

father& q = *father; //基類引用繫結到派生類物件

son son;

father* father = &son; //可以

son* p_son = father; // 非法,編譯器通過靜態型別推斷轉換合法性,發現基類不能轉成派生類;如果基類中有虛函式,可以通過dynamic_cast轉換;

son* p_son = dynamic_castfather;

並不存在從基類到派生類的自動型別轉換

son* son = new father(); //非法		

father father;

son &son = father; //非法,不能將基類轉換成派生類,派生類的引用不能繫結到基類物件上

son &son = &father; //非法,不能講基類轉成派生類,派生類指標不能指向基類位址

用派生類物件為乙個基類物件初始化或者賦值的時候,只有該派生類物件的基類部分會被拷貝或者複製,派生類部分將被忽略掉;

son son; //派生類物件;

father father(son); //用派生類物件來定義並初始化基類物件,這個會導致基類的拷貝建構函式的執行

基類和派生類

include include using namespace std class animal class dog public animal class dog public animal這裡的 就是繼承或派生,class cat public animal class item base st...

基類和派生類 this

基類指標在程式執行的時候的確指向的是乙個派生類的物件,但指標的型別仍然是基類指標。c 是一種強型別語言,因此不能用基類指標型別的指標直接呼叫派生類 而且,同乙個類可能有多種不同的派生類,因此不知道實際指向的會是哪個派生類。如果確信是某個派生類的話,可以用這樣的方法來呼叫 cb this b 1 cb...

關於基類指標 派生類指標 基類物件派 生類物件問題

1 基類指向派生類的指標 2 派生類指向基類的指標 3 以及將派生類指標強制轉換為基類指標 4 將基類指標強制轉換為派生類指標 無論是基類指向派生類還是派生類指向基類,重點就是哪個類的指標就呼叫哪個類的方法,而輸出的是指標指向的物件。基類指向派生類的指標即將派生類物件賦給基類指標,如果輸出的話,呼叫...