1。這就合乎邏輯了:銷售員是一般職員的一種,他的薪水應該是以時薪職員的計薪方式作
為底薪,再加上額外的銷售佣金。我們看看實際情況,如果有一個銷售員:
CSales aSales("侯俊傑");那麼侯俊傑的底薪應該是 :
aSales.CWage::computePay(); // 這是銷售員的底薪。注意語法。
而侯俊傑的全薪應該是 :
aSales.computePay(); // 這是銷售員的全薪
結論是:要呼叫父類別的函式,你必須使用 scope resolution operator(::)明白指出。
2.虚拟函数作用是将对象操作一般化。
「一般化」之所以重要,在於它可以把現在的、未來的情況統統納入考量
3.純虛擬函式不需定義其實際動作,它的存在只是為了在衍生類別中被重新定義
補充:CCircle 繼承了CShape 之後,如果沒有改寫 CShape 中
的純虛擬函式,那麼 CCircle 本身也就成為一個擁有純虛擬函式的類別,於是它也是一個抽象類別。
总结:
?? 1。如果你期望衍生類別重新定義一個成員函式,那麼你應該在基礎類別中把此函
式設為 virtual。
?? 2。以單一指令喚起不同函式,這種性質稱為 Polymorphism,意思是 "the ability to
assume many forms",也就是多型。
?? 3。虛擬函式是 C++ 語言的 Polymorphism 性質以及動態繫結的關鍵。
?? 4。既然抽象類別中的虛擬函式不打算被呼叫,我們就不應該定義它,應該把它設
為純虛擬函式(在函式宣告之後加上 "=0" 即可)。
?? 5。我們可以說,擁有純虛擬函式者為抽象類別(abstract Class),以別於所謂的
具象類別(concrete class)。
?? 6。抽象類別不能產生出物件實體,但是我們可以擁有指向抽象類別之指標,以便
於操作抽象類別的各個衍生類別。
?? 7。虛擬函式衍生下去仍為虛擬函式,而且可以省略 virtual 關鍵字。