1、繼承
C++類的3種繼承方式卦停,分別是public繼承,protected繼承恼蓬,private繼承。
最常用的還是public繼承僵芹。class默認(rèn)的是private繼承处硬,它的member如果沒寫權(quán)限也是默認(rèn)private。struct則相反拇派,默認(rèn)的是public繼承荷辕。派生類型必須對想要重定義的每個(gè)繼承成員進(jìn)行聲明(virtual 函數(shù))。
像 private 成員一樣件豌,protected 成員不能被類的用戶訪問疮方。像 public 成員一樣,protected 成員可被該類的派生類訪問茧彤。派生類只能通過派生類對象訪問其基類的 protected 成員骡显,派生類對其基類類型對象的 protected 成員沒有特殊訪問權(quán)限。
void Bulk_item::memfcn(const Bulk_item &d, const Item_base &b)
{
// attempt to use protected member
double ret = price; // ok: uses this->price
ret = d.price; // ok: uses price from a Bulk_item object
ret = b.price; // error: no access to price from an Item_base
}
? 如果是公用繼承曾掂,基類成員保持自己的訪問級別:基類的 public 成員為
派生類的 public 成員惫谤,基類的 protected 成員為派生類的 protected
成員。
? 如果是受保護(hù)繼承珠洗,基類的 public 和 protected 成員在派生類中為
protected 成員溜歪。
? 如果是私有繼承,基類的的所有成員在派生類中為 private 成員许蓖。
? ? ? 如果基類定義 static 成員蝴猪,則整個(gè)繼承層次中只有一個(gè)這樣的成員。
? ? ? 要確定到基類的轉(zhuǎn)換是否可訪問膊爪,可以考慮基類的 public成員是否訪問自阱,如果可以,轉(zhuǎn)換是可訪問的米酬,否則动壤,轉(zhuǎn)換是不可訪問的