Memberfunktionen der Inlineklassen
Eine Funktion, die im Text einer Klassendeklaration definiert ist, ist eine Inlinefunktion.
Beispiel
In der folgenden Klassendeklaration ist der Account-Konstruktor eine Inlinefunktion. Die Memberfunktionen GetBalance, Deposit und Withdraw sind nicht als inline festgelegt, können aber als Inlinefunktion implementiert werden.
// 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()
{
}
Hinweis
In der Klassendeklaration wurden die Funktionen ohne das inline-Schlüsselwort deklariert.Das Schlüsselwort inline kann in der Klassendeklaration bezeichnet werden; das Ergebnis ist dasselbe.
Eine angegebene Inlinememberfunktion muss in jeder Kompilierungseinheit auf die gleiche Weise deklariert werden. Diese Einschränkung bewirkt, dass sich Inlinefunktionen wie instanziierte Funktionen verhalten. Außerdem muss es genau eine Definition einer Inlinefunktion geben.
Eine Klassenmemberfunktion führt standardmäßig zu externer Bindung, es sei denn, eine Definition für diese Funktion enthält den inline-Spezifizierer. Das vorhergehende Beispiel zeigt, dass diese Funktionen nicht explizit mit dem inline-Spezifizierer deklariert werden müssen. Die Verwendung von inline in der Funktionsdefinition bedeutet bereits, dass es sich um eine Inlinefunktion handelt. Es ist jedoch nicht zulässig, eine Funktion nach einem Aufruf als inline zu redeklarieren.