邊邊角角c++

宏定義函數

省略參數類型 ()裏是返回值

#define EXTERN16BYTE(x)   ((x + 15) / 16 * 16)
#define isLeap(n) (n%400==0||(n%4==0&&n%100!=0)?1:0)

public\private\protected

1.private成員只能被本類成員(類內)和友元訪問,不能被派生類訪問;

2.protected成員可以被派生類訪問。
public可被類外訪問。

繼承

在這裏插入圖片描述

派生類繼承方式

public繼承:父類成員在子類中保持原有訪問級別

private繼承:父類成員在子類中變爲private成員

protected繼承:父類中public成員會變成protected

                          父類中protected成員仍然爲protected

                          父類中private成員仍然爲private

類型兼容性原則

派生類可以被當作基類使用 子類就是特殊的父類
子類對象可以當作父類對象使用

子類對象可以直接賦值給父類對象

子類對象可以直接初始化父類對象

父類指針可以直接指向子類對象

父類引用可以直接引用子類對象

繼承中的構造析構調用原則

構造時 父類->子類 析構時相反

組合

組合:類中有類,強調has a
先構造父類,再構造成員變量、最後構造自己

派生類中有同名成員/函數

1.直接調用訪問的是子類成員/函數

2.子類可以通過添加作用域來訪問父類中的同名成員成員/函數
s1.father::fun(110);

派生類中訪問static

基類定義的靜態成員,將被所有派生類共享
類名 :: 成員

虛繼承

如果在多條繼承路徑上有一個公共的基類,那麼在繼承路徑的某處匯合點,這個公共基類就會在派生類的對象中產生多個基類子對象
要使這個公共基類在派生類中只產生一個子對象,必須對這個基類
聲明爲虛繼承,使這個基類成爲虛基類。
class B1:public virtual A;

虛函數&&純虛函數&&抽象類

在這裏插入圖片描述

虛函數

C++中的虛函數的作用主要是實現了多態的機制。第一層是在基類中用virtual關鍵字聲明的,第二層是要在多個派生類中被重新定義。
虛函數允許函數調用與函數體之間的聯繫在運行時才建立
構造函數不可以是虛函數
而析構函數可以是虛函數

純虛函數

虛函數=0 在基類中無定義

抽象類

擁有純虛函數的類叫作抽象類,無法實例化。

delete 和 delete[]的區別

  • 對於基本數據類型來說,相同
  • 對於自定義的數據類型來說,delete 僅回收該指針指向的內存
    delete[]回收指向數組的所有內存
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章