最新回答 / 慕粉2248089209
這里面的虛函數都是采用的虛函數列表來進行的,如果是純虛函數的話,該表指向一個不存在的函數,所以實例化被禁止。簡單來說,就是 如果基類中含有純虛函數,都不能實例化,在繼承了該基類中的派生類中,如果不對該函數進行改寫,也不能實例化。
2019-10-05
最贊回答 / chen_l
舉個例子:假設不使用多態,一個代碼框架寫好了,功能是:一個計算圖形Shape的面積.假設我們最開始只有矩形,那么我們在需要計算圓形的面積的時候需要修改框架內的代碼.如果我們使用了多態,那么只需要讓圓形繼承Shape, 只需要新增圓形計算面積的代碼,不需要修改核心代碼.這樣邏輯更清晰,更安全.在成千上萬甚至幾十萬代碼的項目中,這個就非常有用了.
2019-10-05
最新回答 / 青鯉
符號(變量)記錄了地址,類型決定了它會被怎么解析,在C++里定義一個變量也要聲明類型的。雖然這是一個子類對象的內存塊,但是它用父類指針去解釋這堆內存是什么(這是合法的),調用這個函數的時候是用父類定義的函數.virtual關鍵字則聲明調用這個函數的時候要繞一下(具體實現是用虛函數表實現)。不用virtual聲明:調用就直接找到函數的地址(編譯的時候就確定了)用virtual聲明:調用的時候去找虛函數表,通過虛函數表找函數的地址。c++語法復雜就是因為給人提供了多種選擇??磻脠鼍?
2019-10-05
最新回答 / 慕后端8647280
總結虛函數 純虛函數虛函數指在函數聲音時加上關鍵字virtual, 目的是為了給子類對象復寫或者調用,從而實現多態;純虛函數通常在接口類中定義, 只有聲明,沒有實現,并且給它賦值為0.這種函數在被子類繼承時需要實現該方法,不能直接調用。
2019-09-03
最新回答 / weixin_慕UI0048803
建議提問的時候把代碼補全,或者截圖,回答問題界面是沒有你問題的詳細描述的?視頻中此處只是為了獲得shape對象的地址,所有需要有(int *)強制類型轉換(目的是得到對象所在的整形地址)通用形式就是 (int *) + 對象
2019-08-15