多型:相同物件收到不同訊息或不同物件收到相同訊息時產生的不同動作。
虛函式:
//shape->circle,shape->rect;
//三個類中都定義了同名的public成員函式calcarea(),當定義父類指標指向堆中子類的例項後,呼叫其成員函式,將預設呼叫父類的成員函式。
virtual
void calcarea();
//與虛析構函式一樣,使用virtual後將呼叫子類成員函式,virtual可以被子類繼承
virtual不能修飾全域性函式,只能修飾類中成員函式。不能修飾用static修飾的靜態成員函式。不能修飾內聯函式。
virtual
void work() = 0; //純虛函式
//virtual修飾,沒有函式體{},函式尾加上=0
含有純虛函式的類,稱為抽象類。抽象類無法例項化物件。
僅含純虛函式的抽象類,稱為介面類。
typeid注意事項:
class typeinfo
//flyable抽象類,子類bird
void printinfo(flyable* f)
flyable* f = new bird();
cout
<< typeid(*f).name() << endl; //->flyable
cout
<< typeid(*f).name() << endl; //->bird
char getchar(const string &str, const int ind)
return str[ind];
}int main()
catch(string& e)
catch(...){} //...表示任意異常
}
//介面類exception
//子類sizeerr、memoryerr等
try //fun1中定義:throw sizeerr();
catch(exception& e) //捕獲介面類(父類),並呼叫子類物件
《C 封裝篇(上) imooc》筆記
限定符 private protected public private是預設修飾符,protected類似於private,不同點在於繼承情況不一樣。class tv 從棧中例項化 tv tv1 tv tvarr 20 從堆中例項化 tv p new tv tv p1 new tv 20 其他操作...
《C 模板類篇 imooc》筆記
友元全域性函式 全域性函式 void printtime time t 在time類中宣告 friend void printtime time t 通過使用友元,就能夠使得物件直接訪問它的私有資料成員和成員函式。友元成員函式 class time void printtime time t inc...
C 之多型篇
我的一點小想法 virtual只需要加在父類裡邊 析構函式和同名成員函式 就好,不過在子類的同名函式加上 virtual 是為了養成好的 書寫習慣。析構函式前邊加是為了防止沒有釋放子類物件的記憶體導致記憶體洩露,同名成員函式前加是為了父類例項化的物件指標能夠指向子類資料成員。這樣基本包含了所有的點了...