第1期:C++面向對象編程基礎之巧用函數組織代碼

C++全面支持面向對象編程,它主要包括三個面向對象開發要素:封裝、繼承和多態。

封裝

封裝即隱藏對象的屬性(數據)和功能(方法)實現細節,控制在程序中屬性的讀取和訪問級別。

繼承

通過繼承機制,可以利用已有的數據類型來定義新的數據類型。所定義的新的數據類型不僅擁有新定義的成員,而且還同時擁有舊的成員。已存在的用來派生新類的類稱之為基類(亦稱之為父類);由已存在的類派生出的新類稱之為派生類(亦稱之為子類)。

多態

多態指的是同一名稱有多種形態。重載是在同一個類的兩個或者兩個以上的方法擁有相同的方法名,但是參數卻不同,方法體也不同,亦即稱之為多態。(最常見的重載就是類的構造函數)。

函數默認參數

函數可以指定默認參數,必須符合此規則:如果某個參數沒有默認值,則它前面的所有參數不得有默認值。

例如:

int fun1(int len, int width, int height=1); //正確

int fun2(int len, int width=2, int height=1); //正確

int fun3(int len=4, int width, int height=1); //錯誤

int fun4(int len=5, int width=6, int height); //錯誤

函數重載

函數名相同,參數類型、參數個數不同的函數稱之為重載函數(多態函數)。

例如:

int myFunction(int, int);

int myFunction(long, long);

int myFunction(int);

函數重載的返回類型可以相同,也可以不同;然而不同的重載版本不僅僅是返回類型不同,而且還應該參數不同。

int myFunction(int, int);

void myFunction(int, int); // 不合法,返回類型不同,但參數列表相同

void myFunction(long);

void myFunction(long, long); // 合法,返回類型相同,但參數個數不同。

問題(下期分享)

Q1:以下分別表示什麼意思?

int iVar = 5;

int NumOme[20] = {1};

int *NumTwo[20] = {&iVar};

int *NumThree = new int[20];

Q2:以下指針分別表示什麼意思?

const int *pOne;

int * const pTwo;

const int * const pThree;


分享到:


相關文章: