vtable什麼時候會被建立?

2021-10-04 17:04:27 字數 1187 閱讀 6658

我們寫了乙個base類,並有(很多)derived類繼承它,同時每個類都有很多成員函式,但是如果類中是沒有虛函式的,那麼編譯器是不會浪費空間去建立vtable的。

看如下**:

圖1 沒有virtual函式則沒有vtable

將上述注釋去掉,增加了虛函式之後便可以編譯通過,但是結果可能還不能如願:

#include

class

window

protected

:private

:int m_val;};

class

specwindow

:public window

protected

:private:}

;int

main()

specwindow* sw =

dynamic_cast

>

(aw);if

(nullptr

!= sw)

return0;

}

再進行修改,便可符合預期:

#include

class

window

protected

:private

:int m_val;};

class

specwindow

:public window

protected

:private:}

;int

main()

specwindow* sw =

dynamic_cast

>

(aw);if

(nullptr

!= sw)

return0;

}

Rss為什麼會興起?什麼時候會被替代?

今天田飛兄給我 了keso的東拉西扯 rss什麼時候消失?本來只是像簡單回覆一下就完事了,不料寫多了。有一天,當你在 上再也看不到那個xml圖示,而你卻在不知不覺地大量使用rss的時候,rss就算修成正果了。當所有的 都自覺的把自己的資訊 push 出來的時候,這一天就到來了,並且我相信很快這一天就...

自動釋放池什麼時候建立,什麼時候銷毀?

自動釋放池什麼時候建立,什麼時候銷毀?執行迴圈結束前會釋放自動釋放池,還有就是池子滿了,也會銷毀。面試題 下面 存在記憶體問題麼?如果存在如何解決?為什麼 void touchesbegan nsset touches withevent uievent event 解題思路 首先根據類方法建立的,...

什麼時候用exists 什麼時候用in

in not in exists not exists 使用exists,oracle會首先檢查主查詢,然後執行子查詢直到它找到第乙個匹配項,這就節省了時間。oracle在執行in子查詢時,首先執行 子查詢,並將獲得的結果列表存放在乙個加了索引的臨時表中。在執行子查詢之前,系統先將主查詢掛起 待子查...