內嵌類別成員函式
在類別宣告的主體中定義的函式是內嵌函式。
範例
在下列類別宣告中,Account 建構函式是內嵌函式。 成員函式 GetBalance、Deposit 和 Withdraw 未指定為 inline,但是可以做為內嵌函式實作。
// Inline_Member_Functions.cpp
class Account
{
public:
Account(double initial_balance) { balance = initial_balance; }
double GetBalance();
double Deposit( double Amount );
double Withdraw( double Amount );
private:
double balance;
};
inline double Account::GetBalance()
{
return balance;
}
inline double Account::Deposit( double Amount )
{
return ( balance += Amount );
}
inline double Account::Withdraw( double Amount )
{
return ( balance -= Amount );
}
int main()
{
}
注意事項 |
---|
在類別宣告中,函式不會使用 inline 關鍵字宣告。inline 關鍵字可以在類別宣告中指定,其結果相同。 |
指定的內嵌成員函式在每個編譯單位中必須以相同方式宣告。 這個條件約束會造成內嵌函式的行為如同具現化函式。 此外,必須只有一個內嵌函式的定義。
除非類別成員函式的定義包含 inline 規範,否則該函式會預設為外部連結。 先前的範例顯示,這些函式不需要使用 inline 規範明確宣告,在函式定義中使用 inline 會造成該函式變成內嵌函式。 不過,在呼叫函式之後重新將該函式宣告為 inline 是不合法的。