Übersicht über Memberfunktionen
Memberfunktionen sind entweder statisch oder nicht statisch. Das Verhalten statischer Memberfunktionen unterscheidet sich von anderen Memberfunktionen, da statische Memberfunktionen kein implizites this
Argument aufweisen. Nicht statische Memberfunktionen weisen einen this
Zeiger auf. Memberfunktionen können, ob statisch oder nicht statisch, entweder inner- oder außerhalb der Klassendeklaration definiert werden.
Wenn eine Memberfunktion innerhalb einer Klassendeklaration definiert ist, wird sie als Inlinefunktion behandelt, und es ist nicht erforderlich, den Funktionsnamen mit dem Klassennamen zu qualifizieren. Obwohl innerhalb von Klassendeklarationen definierte Funktionen bereits als Inlinefunktionen behandelt werden, können Sie den inline
Schlüsselwort (keyword) verwenden, um Code zu dokumentieren.
Ein Beispiel des Deklarierens einer Funktion innerhalb einer Klassendeklaration folgt:
// overview_of_member_functions1.cpp
class Account
{
public:
// Declare the member function Deposit within the declaration
// of class Account.
double Deposit( double HowMuch )
{
balance += HowMuch;
return balance;
}
private:
double balance;
};
int main()
{
}
Wenn sich die Definition einer Memberfunktion außerhalb der Klassendeklaration befindet, wird sie nur dann als Inlinefunktion behandelt, wenn sie explizit als inline
deklariert wird. Darüber hinaus muss der Funktionsname in der Definition mit dem Klassennamen mithilfe des Bereichsauflösungsoperators (::
) qualifiziert sein.
Das folgende Beispiel ist mit der vorherigen Deklaration der Klasse Account
identisch, mit der Ausnahme, dass die Funktion Deposit
außerhalb der Klassendeklaration definiert ist:
// overview_of_member_functions2.cpp
class Account
{
public:
// Declare the member function Deposit but do not define it.
double Deposit( double HowMuch );
private:
double balance;
};
inline double Account::Deposit( double HowMuch )
{
balance += HowMuch;
return balance;
}
int main()
{
}
Hinweis
Obwohl Memberfunktionen entweder innerhalb einer Klassendeklaration definiert werden können oder getrennt, können keine Memberfunktionen einer Klasse hinzugefügt werden, nachdem die Klasse definiert ist.
Die Klassen, die Memberfunktionen enthalten, können viele Deklarationen haben, aber die Memberfunktionen selbst dürfen nur eine Definition in einem Programm haben. Mehrfache Definitionen verursachen zur Verknüpfungszeit eine Fehlermeldung. Wenn eine Klasse Inlinefunktionsdefinitionen enthält, müssen die Funktionsdefinitionen identisch sein, um dieser ODR (one definition rule) zu entsprechen.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für