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