c oop物件導向

2021-09-26 16:24:09 字數 1599 閱讀 4508

定義基類

//基類通常都應該定義乙個虛析構函式,即使該函式不執行任何實際操作也是如此。

//基類必須將它的兩種成員函式區分開來,

//一種是基類希望其派生類進行覆蓋的函式,既虛函式,使用virtual關鍵字

//一種是基類希望派生類直接繼承而不要改變的函式

class quote

virtual double net_price(int n) const

virtual ~quote() = default;//對析構函式動態繫結

private:

string bookno;

protected:

double price = 0.0;

};定義派生類

//派生類必須通過使用類派生列表明確指出它是從那個(那些)基類繼承而來。

//類派生列表是冒號後邊以逗號隔開的基類列表,可以在每個基類前加訪問說明符。

//派生類必須將繼承而來的需要覆蓋的函式重新宣告。

//乙個派生類物件包含多個組成部分,乙個是派生類自己定義的成員,和繼承來的基類的成員。

//如果派生類沒有覆蓋其基類中的某個虛函式,則該虛函式的行為類似於其他普通成員,派生類會直接繼承其在基類中的版本。

//派生類也必須使用基類的建構函式來初始化它的基類部分。

class bulk_quote : public quote

;//每個類控制自己的成員初始化過程

//首先初始化基類的成員部分,然後按照宣告的順序依次初始化派生類的成員

bulk_quote::bulk_quote(const string& book, double p, int qty, double disc) :

quote(book, p), min_qty(qty), discount(disc) {}

//派生類可以訪問基類的共有成員和受保護成員

double bulk_quote::net_price(int n) const

bulk_quote::~bulk_quote()

{}void showprice(const quote& quote)

int main()

//base不能作為基類,應為它不能被繼承,成員函式和成員變數都可以用final來修飾。

型別轉換與繼承

//在使用繼承關係時要區分表示式的靜態型別和動態型別。靜態在編譯時總是已知的,動態型別在執行時才可知。

//不存在從基類向派生類的隱式型別轉換

//物件之間不存在型別轉換,派生類向基類的自動型別轉換只對指標或引用有效。

//當我們用過乙個派生類物件為乙個基類物件初始化或賦值時,只有該派生類物件中的基類部分會被拷貝、移動或賦值,派生類的其他部分將被忽略掉。

//派生來向基類的型別轉換也可能會由於訪問受限而不成功。

bulk_quote bbulk;//派生類物件

quote iitem(bbulk);//使用的是派生類中的基類部分初始化的quote建構函式

iitem = bbulk;//呼叫的是quote::operator=(const quote&)

return 0;

}

C OOP物件導向

oop 物件導向,全程叫object oriented programming 物件導向的三大特性 1 封裝2 繼承3 多型類的定義 實際上就是具有相同屬性和特徵的一類事物的抽象集合 類和物件的關係 類是物件的抽象,物件是類的例項.物件的定義 抽象類的例項.小例子昨天,我去了工商銀行去辦銀行卡 在我...

11 c oop思想物件導向程式設計(by 朝夕)

物件導向特點 設計模式 原則 設計模式六大原則 類與介面的區別 類是為了說明是什麼。介面是為了限定做什麼。pop procedure oriented programming 面向過程程式設計 oop object oriented programming 物件導向程式設計 繼承 封裝,多型 封裝 ...

c oop 類和物件

物件導向 簡單的說就是寫很多類 每個類有自己的資料和函式,叫做 成員 類定義出來的變數,也稱為類的例項,就是 物件 和struct 好像差不多 物件之間有 關係,其他的需要定義 private 私有成員,只能在成員函式內訪問 public 公有成員,可以在任何地方訪問 protected 保護成員,...