虛函式的作用
可以讓成員函式操作一般化,用基類的指標指向不同的派生類的物件時,
基類指標呼叫其虛成員函式,則會呼叫其真正指向物件的成員函式,
而不是基類中定義的成員函式(只要派生類改寫了該成員函式)。
若不是虛函式,則不管基類指標指向的哪個派生類物件,呼叫時都
會呼叫基類中定義的那個函式。
程式1:
#i nclude
using namecpace std;
class b0 //基類b0宣告
void main() //主函式
執行結果:
b0::display()
b0::display()
b0::display()
程式2:
#i nclude
using namespace std;
class b0 //基類b0宣告
void main() //主函式
執行結果:
b0::display()
b1::display()
d1::display()
虛函式是動態繫結的基礎。
是非靜態的成員函式。
在類的宣告中,在函式原型之前寫virtual。
virtual 只用來說明類宣告中的原型,不能用在函式實現時。
具有繼承性,基類中宣告了虛函式,派生類中無論是否說明,同原型函式都自動為虛函式。
本質:不是過載宣告而是覆蓋。
呼叫方式:通過基類指標或引用,執行時會 根據指標指向的物件的類,決定呼叫哪個函式。
可以讓成員函式操作一般化,用基類的指標指向不同的派生類的物件時,
基類指標呼叫其虛成員函式,則會呼叫其真正指向物件的成員函式,
而不是基類中定義的成員函式(只要派生類改寫了該成員函式)。
若不是虛函式,則不管基類指標指向的哪個派生類物件,呼叫時都
會呼叫基類中定義的那個函式。
程式1:
#i nclude
using namecpace std;
class b0 //基類b0宣告
void main() //主函式
執行結果:
b0::display()
b0::display()
b0::display()
程式2:
#i nclude
using namespace std;
class b0 //基類b0宣告
void main() //主函式
執行結果:
b0::display()
b1::display()
d1::display()
虛函式是動態繫結的基礎。
是非靜態的成員函式。
在類的宣告中,在函式原型之前寫virtual。
virtual 只用來說明類宣告中的原型,不能用在函式實現時。
具有繼承性,基類中宣告了虛函式,派生類中無論是否說明,同原型函式都自動為虛函式。
本質:不是過載宣告而是覆蓋。
呼叫方式:通過基類指標或引用,執行時會 根據指標指向的物件的類,決定呼叫哪個函式。
虛函式的作用
虛函式的作用是允許在派生類中重新定義與基類同名的函式,並且可以通過基類指標或引用來訪問基類和派生類中的同名函式。例 基類與派生類中有同名函式。在下面的程式中student是基類,graduate是派生類,它們都有display這個同名的函式。include include using namespa...
虛函式的作用
虛函式的作用是實現動態聯編,也就是在程式的執行階段動態地選擇合適的成員函式,在定義了虛函式後,可以在基類的派生類中對虛函式重新定義,在派生類中重新定義的函式應與虛函式具有相同的形參個數和形參型別。以實現統一的介面,不同定義過程。如果在派生類中沒有對虛函式重新定義,則它繼承其基類的虛函式。當程式發現虛...
虛函式的作用
虛函式的作用是允許在派生類中重新定義與基類同名的函式,並且可以通過基類指標或引用來訪問基類和派生類中的同名函式。例 基類與派生類中有同名函式。在下面的程式中student是基類,graduate是派生類,它們都有display這個同名的函式。include include using namespa...