c++繼承

來源:互聯網
上載者:User

標籤:c++   繼承   靜態類型   動態類型   

理解函數的解析過程對於理解c++的繼承至關重要,假設我們調用p->mem(),則依次執行以下四個步驟:

1.首先確定p的靜態類型。因為我們調用的是一個成員,所以該類型必然是類類型。

2.在p的靜態類型對應的類中尋找mem。如果找不到,則依次在直接基類中不斷尋找直至到達繼承鏈的頂端。如果找遍了該類及其基類仍然找不到,則編譯器將報錯。

3.一旦找到了mem,就進行常規的類型檢查已確認對於當前找到的mem,本次調用是否合法。

4.假設調用合法,則編譯器將根據調用的是否是虛函數而產生不同的代碼:

4.1.如果mem是虛函數且我們是通過引用或指標進行的調用,則編譯器產生的代碼將在運行時確定到底運行該虛函數的哪個版本,依據是對象的動態類型;

4.2.反之,如果mem不是虛函數或者我們是通過對象(非引用或非指標)進行的調用,則編譯器將產生一個常規函數調用。

c++繼承

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.