c++的繼承與多態

繼承與多態

   繼承的本質:代碼的複用


1)派生類的內存佈局,都繼承了基類的什麼。



2)繼承來的東西的訪問限定: 


3)派生類對象的構造順序


4)派生類和基類同名成員方法的關係:

 重載:作用域相同,函數名相同,參數列表不同的函數。

 隱藏:繼承結構中,派生類隱藏了與基類同名的函數。(隱藏基類,優先調用自己的)

 覆蓋:基類有與派生類同名的函數,返回值相同,參數列表相同。並且基類的函數爲虛函數。則基類的虛函數會覆蓋派生類的函數。

5)基類對象和派生類對象能否互相賦值和引用

Base b;  Derive d;  

 基類對象---》派生類對象   例:d=b;  //error 因爲派生類對象包含基類成員和派生類成員。會造成派生類的成員部分沒有賦值

 派生類對象---》基類對象   例:b=d; //正確  因爲派生類對象包含了基類成員的那部分,則可以賦值。     (編譯器默認的支持自下向上的轉換)

 基類對象的指針/引用----》派生類對象  :Base *pa=&d; //正確 但是指針接引用不能訪問派生類的成員。因爲指針的類型爲Base*

 派生類對象的指針/引用----》基類對象   例:Derive *pb=&b;//error 


 6)虛函數和多態

 

 7)什麼情況下產生多態的調用:使用指針和引用指向不同於該指針類型的對象的時候。

  

 8)純虛函數和抽象類

 

  抽象類:擁有純虛函數的類爲抽象類,抽象類不能定義對象,可以定義指針/引用。







       

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章