c++||OOP

來源:互聯網
上載者:User

標籤:通過   儲存   virt   自己的   關係   訪問   log   ase   虛函數   

  物件導向具有三個特徵:資料抽象,繼承和動態綁定,用類進行資料抽象,用類派生一個類繼承另外一個類,衍生類別繼承基類的成員,動態綁定使編譯器能夠決定是使用基類中定義的函數還是派生中定義的函數,

  1.繼承

    繼承使衍生類別(dervied class)能夠繼承基類(base class)定義成員,可以無需改變與衍生類別不相關的操作,衍生類別可以重定義那些與衍生類別型相關的成員函數,將函數特化,通過定義基類來派生更多的成員,基類必須指出希望衍生類別重定義那些函數,可以定義virtual的函數基類重新定義。

  2.動態綁定(dymanatic binding)能夠編寫使用繼承層次中的任意類型的對象,無需關心對象的類型.

  

  3.virtual與其他成員函數

    c++預設不使用動態綁定,當要出發動態綁定時,通過指定虛函數成員進行動態綁定,成員預設為非虛函數,非虛函數不進行動態綁定;第二必須通過基類類型的引用或指標進行函數調用

  4.預設實參與虛函數

    虛函數也有預設實參,如果有用在給定調中的預設實參值,該值在編譯時間確定;

    如果一個調用省略了具有預設值的實際參數,則所用的值有調用該函數的類型定義,與對象的動態類型無關

    通過基類的引用或指標調用虛函數,則預設實參是在衍生類別的版本中聲明的值,

 

  5.友元關係

    不能繼承,基類的友元對衍生類別沒有特殊存取權限,如果基類被授予友元關係,則只有基類具有特殊存取權限.

    

//訪問對方保護類
class FC{friend class Frnd;public:FC();private:protected:int i;};class Dl :FC {friend class FC;public :int getFc(FC f) { return f.i; }private:};class Frnd {public:int mem(FC b) { return b.i; }int men();private:int dc;};

 

  6.繼承靜態成員

    如果基類定義了static成員,則整個繼承層次中只有一個成員,無論派生多少類,每個static只有一個執行個體

  7.建構函式和複製控制

    每個衍生類別對象由衍生類別定義成員中加上一個或者多個基類子物件構成,這會影響著衍生類別對象的構成.

  7.2重構

    重構包括重新定義類層次,將操作或資料類轉移,重構改變後代碼必須重新編譯

   7.3尊重基類介面

    建構函式只能初始化直接基類的原因每個定義了自己的介面,一旦定義所有的互動通過該介面.

  8虛構析函數

    刪除動態指派至,需要解構函式釋放記憶體之前清楚對象,在繼承層次中,指標的靜態類型刪除不同時需要解構函式,清楚基類成員而必須為虛函數

  9.控制代碼類

    通過定義控制代碼(handlde)和封裝(cover)來儲存管理類指標,指標指向對象可以變化,虛成員的行為在運行時根據控制代碼訪問繼承操作.

  

      

      

c++||OOP

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.