繼承中的類作用域

引出

Bulk_quote bulk;
cout <<bulk.isbn()<<endl;

靜態類型決定由誰開始向上搜索

Quote是Disc_quote的父親,Disc_quote是Bulk_quote的父親。

在Disc_quote中加入以下函數。

給出以下示例:bulkP從孫子代開始搜索,itemP從基類開始搜索。

再次澄清名字查找規則

549頁
首先確定靜態類型(就是=左邊),從底層向頂層找直到找到。
如果是虛函數,則運行時決定,依賴動態類型(就是=右邊); 不是虛函數,就是常規調用

引出覆蓋和隱藏

普通函數隱藏

普通函數只要函數名字相同,就是隱藏;虛函數名字相同但形參列表不同,纔是隱藏。

虛函數覆蓋

只有形參列表和函數名相同才叫覆蓋。一般返回值類型也要相同啊,只有一個小例外,否則視爲獨立函數。

調用:先根據靜態類型查找,然後如果是虛函數就再看動態類型。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章