C++中抽象類別和多繼承

來源:互聯網
上載者:User

標籤:api函數   開發   函數參數   介面   增加   定義   語言   思想   函數指標   

C++中沒有java中介面的概念,但是可以使用抽象類別來類比java中的介面。

工程上的多繼承

工程開發中的多繼承幾乎是不被使用的

多繼承帶來的代碼的複雜性,遠遠大於其代碼帶來的便利性。

多繼承對代碼的維護產生災難性的後果

在設計上,任何有多繼承的地方,都可以用單繼承來代替

C++支援多繼承,多繼承有一個二義性。

面向抽象類別編程這種能力需要提升。

函數指標:

函數類型

函數指標類型

定義一個函數指標,指向一個函數的入口地址

函數名稱代表函數的入口地址,就是一個函數指標

對於函數名稱是否取地址,效果是一樣的,這是由於C曆史相容性的原因。

函數指標和數組指標出奇的相似

定義的類型C++編譯器不會分配記憶體,可是如果是直接定義了函數指標,會直接分配記憶體的。

函數指標做函數參數:

指標做函數函數和函數指標做函數參數:

指標做函數參數的思想,調用任務的人和寫任務的人通過函數指標做函數參數解耦合,這是回呼函數的本質。

C++中通過多態的機制,在為每個類對象產生一個vptr指標,通過這個vptr指標找到一個虛函數表,通過虛函數表找到了對應執行函數的入口地址,從而實現了多態的擴充。

函數指標做函數的本質,提前進行了一種協議的約定,也就是參數個數和類型,以及參數傳回值的類型。只要是滿足這種類型指標的協議約定,就可以調用起來。

回調,就是,函數調用底層庫,然後底層庫在調用你寫的代碼,這個就是回調。

可以通過調用系統的API函數找到DLL庫中的函數的入口地址,當然前提是要將這個DLL檔案載入到記憶體中。

handle記錄了函數啟動並執行上下文資訊。

底層庫提供的是一種機制,而不是一種策略。

控制代碼的概念和內容相關的概念

在底層庫分配的記憶體,需要調用底層庫的API進行釋放

C++中使用多態解耦合,C語言中使用函數指標來解耦合。

不要輕易的增加介面,

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.