C++底層機制-第三天

C++不要在構造函數和析構函數中調用虛函數

從概念上說,析構函數是用來銷燬一個對象的,在銷燬一個對象時,先調用該對象所屬類的析構函數,然後再調用其基類的析構函數,所以,在調用基類的析構函數時,派生類對象的“善後”工作已經完成了,這個時候再調用在派生類中定義的函數版本已經沒有意義了。

因此,一般情況下,應該避免在構造函數和析構函數中調用虛函數,如果一定要這樣做,程序猿必須清楚,這是對虛函數的調用其實是實調用。


窗口滑動機制

TCP使用的一種流量控制方法。該協議允許發送方在停止並等待接收確認報文前可以連續發送多個分組。由於發送方不必每發一個分組就停下來等待確認,因此該協議可以加速數據的傳輸。 只有在接收窗口向前滑動時(與此同時也發送了確認),發送窗口才有可能向前滑動。收發兩端的窗口按照以上規律不斷地向前滑動,因此這種協議又稱為滑動窗口協議。


擁塞控制

網絡中的鏈路容量和交換結點中的緩存和處理機都有著工作的極限,當網絡的需求超過他們的工作極限時,就出現了擁塞。擁塞控制就是為了防止過多的數據注入到網絡中,這樣可以使網絡中的路由器或鏈路不致過載。

常用的方法:

-1 慢啟動,擁塞控制

-2 快重傳,快恢復

volatile表示什麼?有什麼作用?

易變的,不會被編譯器進行優化,讓程序取數據直接去內存中的。


Static_cast<>,dynamic_cast<>,const_cast<>,reinterpret_cast<>的各自作用和使用環境?

Static_cast:能完成大部分轉換功能,但是並不確保安全

Const_cast:無法從根本上轉變類型,如果是const,它就依舊是const,只是如果原對象不是const,可以通過此轉換來處理,針對指針和引用而言。

Dynamic_cast:針對基類和派生類指針和引用轉換,基類和派生類之間必須要繼承關係,是安全的

Reinterpret_cast:允許將任何指針類型轉為其他指針類型,是安全的


分享到:


相關文章: