c++物件導向的編程

來源:互聯網
上載者:User

標籤:

一、概述:

  物件導向編程基於三個基本概念:資料抽象、繼承和 動態綁定

  在c++中,用類進行資料抽象; 用類派生從一個類繼承另一個類:衍生類別繼承基類的成員;

  多態:動態綁定使編譯器能夠在 運行時  決定是使用基類中定義的函數還是衍生類別中定義的函數;

  物件導向編程的關鍵思想是多態性(polymorphism);實現多態必須通過:1、繼承  2、動態綁定

    通過動態綁定(dynamic binding)能夠編寫程式使用繼承層次中任意類型的對象,無須關心對象的具體類型。使用這些類的程式

  無須區分函數是在基類還是在衍生類別中定義的;

  在c++中,通過基類的引用(或指標)調用虛函數時,發生動態綁定。引用(或指標)既可以指向基類對象也可以指向衍生類別對象,這一事實是動態綁定的關鍵。用引用(或指標)調用的虛函數在運行是確定,被調用的函數是引用(或指標)所指對象的實際類型所定義的;

 

 1 void print(const base &item, size_t n) 2 { 3         os << item.net_price(n) <<endl; 4 } 5 /* 6  *base base1; 7  *diver diver1;      //diver繼承base; 8  * 9  * net_price(size_t t)在base為virtual函數,並有實現(非純虛函數)10  * net_price(size_t t)在diver內也進行了函數實現11  *12  *在print中調用基類中net_price()還是衍生類別中的net_price()呢?13  *      這個是由程式在運行時決定的,關鍵在於看參數base&的引用14  *   是指向基類對象呢,還是指向衍生類別對象呢,來直接確定的;15  *(實現的基礎是:基類的引用即可以指向基類對象也可以指向衍生類別對象)   16  */

 

 1 class Item_base{ 2 public: 3         Item_base(const std::string &book="", 4                   double sales_price=0.0): 5         isbn(book), price(sales_price) 6         { 7         } 8  9         std::string book() const10         {11                 return isbn;12         }13         virtual double net_price(std::size_t n) const14         {15                 return n*price;16         }17         virtual ~Item_base()18         {19         }20 private:21 private:22         std::string isbn;23 protected:24         std::string isbn;25 protected:26         }27 private:28         std::string isbn;29 protected:30         double price;31 }32 /*除了建構函式之外,(解構函式最好加virtual)任意非static成員函數都可以是虛函數。33  *保留字只能在類內部的成員函式宣告中出現,不能用在類定義體外部出現的函數定義上;34  */

 

c++物件導向的編程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.