c++||OOP

  面向對象具有三個特征:數據抽象,繼承和動態綁定,用類進行數據抽象,用類派生一個類繼承另外一個類,派生類繼承基類的成員,動態綁定使編譯器能夠決定是使用基類中定義的函數還是派生中定義的函數,

  1.繼承

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

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

  

  3.virtual與其他成員函數

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

  4.默認實參與虛函數

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

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

    通過基類的引用或指針調用虛函數,則默認實參是在派生類的版本中聲明的值,

 

  5.友元關系

    不能繼承,基類的友元對派生類沒有特殊訪問權限,如果基類被授予友元關系,則只有基類具有特殊訪問權限.

    

//訪問對方?;だ?br />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)來存儲管理類指針,指針指向對象可以變化,虛成員的行為在運行時根據句柄訪問繼承操作.

  

      

      

posted @ 2017-10-13 20:37  OKSSJ  閱讀(...)  評論(...編輯  收藏