Funzioni membro di classi inline
Una funzione definita nel corpo di una dichiarazione di classe è una funzione inline.
Esempio
Nella seguente dichiarazione di classe, il costruttore Account è una funzione inline. Le funzioni membro GetBalance, Deposit e Withdraw non sono specificate come inline ma possono essere implementate come funzioni 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()
{
}
Nota
Nella dichiarazione di classe, le funzioni sono state dichiarate senza la parola chiave inline.La parola chiave inline può essere specificata nella dichiarazione di classe; il risultato è analogo.
Una funzione membro inline specificata deve essere dichiarata allo stesso modo in ogni unità di compilazione. Questo vincolo fa sì che le funzioni inline funzionino come se fossero funzioni con istanze create. Inoltre, deve esserci esattamente una definizione di una funzione inline.
Una funzione membro della classe viene impostata in modo predefinito su un collegamento esterno a meno che una definizione di tale funzione non contenga l'identificatore inline. Nell'esempio precedente viene illustrato che queste funzioni non debbano essere dichiarate in modo esplicito con l'identificatore inline; l'utilizzo di inline nella definizione della funzione la rende una funzione inline. Tuttavia, non è valido ridichiarare una funzione come inline dopo una chiamata a tale funzione.