Inline Specifier
關於 C++ 的關鍵字 Inline
Categories:
什麼是 Inline
在 C++ 中,inline 是一種優化的方式,透過在編譯期間將 Function call 替換成 Function body,以優化調用過程。
關鍵字 inline 僅意味「向 Compiler 發出申請」
Programmer 可以明確的提出請求,或隱喻的提出。但不論哪種,編譯器可以拒絕這個申請,大部分過於複雜的函式都會被拒絕 inline:
- 有 loop 的
- 多數的 virtual function (等 Runtime 才確定哪個被喚醒)
顯示與隱式的分別:
- 顯式: 關鍵字
inline
是一種對 Compiler 發出的明確請求,但 Compiler 不一定會遵循。 - 隱式: 有另一種暗示請求,就是把 function 實作寫在 class 定義裡面。這種通常是 member function,但 friend function 也可直接定義在 class 內,因此也可能被隱式宣告為 inline。
class Person {
public:
int age() const { return theAge; }
// an implicit inline request: age is defined in a class efinition
private:
int theAge;
};