inline函數的作用繼承了宏定義的優點,沒有了參數壓棧,代碼生成等一部分操作,並且摒棄了沒有檢查編譯規則的缺點;
另外要注意,內聯函數一般只會用在函數內容非常簡單的時候,這是因為,內聯函數的代碼會在任何調用它的地方展開,如果函數太復雜,代碼膨脹帶來的惡果很可能會大於效率的提高帶來的益處。內聯函數最重要的使用地方是用於類的存取函數。
原因1:
inline實際上“相當於”宏替換,就是把函數的二進制代碼直接復制到調用的地方,因而inline代碼不應該有跳轉。而循環結構無法避免條件跳轉,所以有循環的代碼無法inline;
原因2:
inline是將代碼copy到指定的位置,放在循環當中就會大量的復制代碼;
這可以默認認為inline函數不能在for循環。