Fonctions membres des classes inline
Une fonction définie dans le corps d'une déclaration de classe est une fonction inline.
Exemple
Dans la déclaration de classe suivante, le constructeur Account est une fonction inline. Les fonctions membres GetBalance, Deposit et Withdraw ne sont pas spécifiées comme inline mais peuvent être implémentées comme fonctions 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()
{
}
Notes
Dans la déclaration de classe, les fonctions ont été déclarées sans mot clé inline.Le mot clé inline peut être spécifié dans la déclaration de classe. Le résultat est identique.
Une fonction membre inline donnée doit être déclarée de la même manière dans chaque unité de compilation. Cette contrainte entraîne les fonctions inline à se comporter comme si elles étaient des fonctions instanciées. En outre, il doit exister une seule définition d'une fonction inline.
Une fonction membre de classe correspond par défaut à une liaison externe sauf qu'une définition de cette fonction contient le spécificateur inline. L'exemple précédent indique que ces fonctions n'ont pas besoin d'être déclarées explicitement avec le spécificateur inline. L'utilisation d'inline dans la définition de fonction transforme la fonction en fonction inline. Toutefois, il n'est pas conforme de redéclarer une fonction comme inline après un appel à cette fonction.