虛函式 與派生類遮蔽基類函式

2021-05-23 04:46:15 字數 348 閱讀 3878

class base

public:

virtual void print( void ){ cout<< 10public:

void print(int i) { cout base* iter=new dervied;

// iter->print(5);    //基類指標會在基類物件中尋找函式,找到函式名後,判斷引數,沒有乙個引數的,所以會報錯。

dervied item;

item.print();      

//因為派生類中的函式名會遮蔽基類中的函式,所以會報錯。先在派生類中尋找函式名,找到以後,判斷引數,沒有發現void引數的

// 所以會報錯。

基類和派生類,虛函式

基類負責定義在層次關係中所有類共同擁有的成員,而每個派生類定義各自持有的成員。基類希望它的派生類各自定義適合自身的版本,此時基類就將這些函式宣告成虛函式。class quote 派生類必須通過使用類派生列表明確指出它是哪個基類繼承而來。類派生列表的形式 首先是乙個冒號,後面緊跟以逗號分隔的基類列表,...

基類和派生類的虛函式表

在派生類中,其虛函式表和基類的虛函式表有什相關性嗎?做個試驗看一下 1 派生類重新實現虛函式。檢視其虛函式表和虛函式表中虛函式的位址 includeusing namespace std class base public virtual void fun cout this is base cla...

虛函式與派生類過載

這裡不講虛函式的定義了 直接進入主題,就是過載。如果基類宣告了乙個函式是虛函式,而且派生類並沒有改變引數,只是把函式內容改變了,那麼這個可以認為是 重寫 派生類過載是什麼呢,就是在派生類中僅僅保留基類的函式名,引數變了,或者返回型別也變了,如果不改變引數僅僅改變返回型別不是過載,這樣也是錯的。如果過...