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