1樓:潘達
inline的函式是複製到呼叫位置,而不是跳轉呼叫,這樣的好處是避免函式呼叫本身出棧入棧消耗額外的時間,而且快取記憶體會更容易命中(一項cpu的技術,命中時會提高執行速度,資料不走記憶體避免了額外時間消耗)。。inline只用於內容重複,但**很短的函式,避免出棧入棧消耗額外的時間,其實行內函數並不是真正意義的函式。。。而是對重複**的簡化。。。
對於複雜函式,不建議用inline,因為他在每個呼叫位置都會複製編譯,會讓**變得非常長,被100個位置呼叫,該函式的記憶體增加100倍,而且現在電腦非常快,inline其實根本沒必要,一般只有幾行的函式才有理由用inline,因為他的出棧入棧跳轉相對本身**執行時間的比例較高,而長**就微乎其微。。。其實inline知道有就行,現在程式設計很少用。。。
用的話這個函式**也不要超過10行,而且通常c語言會用 巨集**來代替inline完成重複的短**,巨集其實效果比inline更好,這樣inline使用頻率更低, inline用的並不多。。。
為什麼虛擬函式不應該是內聯(inline)函式
2樓:泣康勝
常見的不能宣告為虛擬函式的有:普通函式(非成員函式)、靜態成員函式、內聯成員函式、建構函式、友元函式。1、為什麼c++不支援普通函式為虛擬函式?
普通函式(非成員函式)只能overload,不能被override,宣告為虛擬函式也沒有什麼意思,因此編譯器會在編譯時繫結函式。2、為什麼c++不支援建構函式為虛擬函式?這個原因很簡單,主要是從語義上考慮,所以不支援。
因為建構函式本來是為了明確初始化物件成員才產生的,然而virtual function主要是為了在不完全瞭解細節的情況下也能正確處理物件。另外,虛擬函式是在不同型別的物件產生不同的動作,現在物件還沒有產生,如何使用虛擬函式來完成你想完成的動作。3、為什麼c++不支援靜態成員函式為虛擬函式?
靜態成員函式對於每個類來說只有乙份**,所有的物件都共享這乙份**,他不歸某個物件所有,所以他也沒有動態繫結的必要性。4、為什麼c++不支援內聯成員函式為虛擬函式? 其實很簡單,行內函數就是為了在**中直接,減少函式呼叫話費的代價,虛擬函式是為了在繼承後物件能夠準確的執行自己的動作,這是不可能統一的。
再說,inline函式在編譯時被,虛擬函式在執行時才能動態的繫結函式。5、為什麼c++不支援友元函式為虛擬函式?
3樓:雨天
二者相連繫:可以知道虛擬函式不能為行內函數,即使寫成內聯形式,編譯器也把它當成普通函式。但是如果是純虛擬函式,禁止寫成內聯形式。
inline函式和一般的函式有什麼不同
4樓:墨澄邈馮曼
這是為了優化程式,讓系統編譯時節約時間。如果inline的函式太大就不可以了。關於節約時間的問題,在一般的小程式中看不出效果,要在大型的專案中才能感覺的出。
周期函式有什麼用周期函式有什麼用
周期函式的定義 對於函式y f x 若存在常數t 0,使得f x t f x 則函式y f x 稱為周期函式,t稱為此函式的週期。性質1 若t是函式y f x 的任意一個週期,則t的相反數 t 也是f x 的週期。性質2 若t是函式f x 的週期,則對於任意的整數n n 0 nt也是f x 的週期。...
學易經有什麼用,學習周易有什麼用嗎
一 易經 可以提前瞭解命運,讓人趨吉避凶 易經 在對自然萬物進行總結分析的同時,也把我們的萬事萬物分成了64類,也就是我們所熟知的64個卦。這64個卦,每一個卦都有獨特的特徵。並且,每一個卦也都有自己獨有的爻辭。那麼當我們每個人的出生時間和姓名都確定之後,我們對應的姓名卦,以及這個姓名卦對應的爻辭也...
餘額寶有什麼用嗎,餘額寶有什麼用?
餘額寶有什麼用?餘額寶可以用來理財和購物。餘額寶對接的是天弘 旗下的餘額寶貨幣 特點是操作簡便 低門檻 零手續費 可隨取隨用。除理財功能外,餘額寶還可直接用於購物 轉賬 繳費還款等消費支付,是移動網際網路時代的現金管理工具。2018年5月3日,餘額寶新接入博時 中歐 公司旗下的 博時現金收益貨幣a ...