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;
閱讀更多 澗雲 的文章