繼承與派生

友元關係不能繼承。函數

若是基類定義了靜態成員,則整個繼承層次中只有一個這樣的成員。不管從基類派生出多少個派生類,每一個靜態成員只有一個實例spa

靜態成員遵循常規訪問控制:若是靜態成員在基類中爲私有的,則派生類不能訪問它。若是該靜態成員在基類是共有的,則基類能夠訪問它,派生類也能夠訪問它。指針

 

賦值兼容規則

賦值兼容規則是指在須要基類對象的任何地方,均可以使用公有派生類的對象來替代。code

經過公有繼承,派生類獲得了基類中除構造函數,析構函數以外的全部成員。這樣,共有派生類實際上就具備了基類的全部功能,凡是基類能解決的問題,共有派生類均可以解決。對象

①派生類的對象能夠賦值給基類對象繼承

②派生類的對象能夠初始化基類的引用class

③派生類的對象的地址能夠複製給指向基類的指針基礎

class Base{};   //基類
class Derive:public Base{};  //共有派生類
Base b, *pb;      //定義基類對象
Derive d;         //定義派生類對象

這時,支持下面三種操做:構造函數

b = d;  //派生類對象賦值給基類,複製基類繼承部分
Base &rb = d;  //基類引用到派生類對象
pb = &d; //基類指針指向派生類對象

賦值兼容規則是C++多態性的重要基礎之一。引用

 

二義性問題

使用成員名限定能夠消除二義性,基本形式爲:

   對象名.基類名::成員名

   對象指針名->基類名::成員名

虛基類

相關文章
相關標籤/搜索