最近在寫C++的東西,
在查資料的時候,注意到兩個平常被我搞混的辭彙:
「Overloading」、「Overriding」
一直以來我其實懂這兩者的觀念,然而卻不記得這種觀念的名詞。
我是屬於不記名詞派的工程師XD。
最近因為在看C++ How to Program看到這兩個有點熟悉但又陌生的名詞,
怕以後讀到書看到名詞又忘記,所以這裡自己簡易版記一篇。
Overloading 多載
定義
在一個類別(class)定義多個名稱相同,然而參數(Parameter)不同的函數。
而系統判斷要使用何者即由參數數量及型別不同而判斷。
例子
class graph
{
public:
void print(int x){
cout<<"一維圖形";
}
void print(int x,int y){
cout<<"二維圖形";
}
void print(int x,int y,int x){
cout<<"三維圖形";
}
}
特點
- 簡化函式命名,不需記住許多function name,交給系統判斷
- 增加工作效率
番外 : Operator Overloading
前述有人稱為function overloading,
有人將Operator Overloading運算子多載也劃在overloading範圍。
因為功力不足,鮮少使用Operator Overloading,因此等書看熟一點再補充
Overriding (覆寫)
定義
一子類別繼承(Inheritance)父類別,然而改寫父類別已定義的方法。
name、return type、parameter都必須相同,僅return的值可變。
例子
class man
{
public:
void say(){
cout<<"I'm a man.";
}
}
class teacher : public man
{
public:
void say(){
cout<<"I'm a teacher.";
}
}
特點
- 減少重複開發相同屬性的類別
- 使用工廠模式(自行領悟,有錯請糾正)