Memberfunktionen
Einführung in Memberfunktionen
Memberfunktionen sind Methoden, die innerhalb einer Klasse definiert sind und auf die Datenmitglieder der Klasse operieren. Sie kapseln das Verhalten von Objekten und bieten eine Möglichkeit, mit Klassendaten zu interagieren.
Arten von Memberfunktionen
graph TD
A[Memberfunktionen] --> B[Reguläre Methoden]
A --> C[Konstruktoren]
A --> D[Destruktoren]
A --> E[Inline-Methoden]
A --> F[Const-Methoden]
Reguläre Methoden
Reguläre Methoden führen Operationen aus und manipulieren Klassendaten:
class Calculator {
public:
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
};
Konstruktoren
Konstruktoren initialisieren den Zustand eines Objekts, wenn ein Objekt erstellt wird:
class Student {
private:
string name;
int age;
public:
// Standardkonstruktor
Student() {
name = "Unknown";
age = 0;
}
// Konstruktor mit Parametern
Student(string n, int a) {
name = n;
age = a;
}
};
Destruktoren
Destruktoren bereinigen Ressourcen, wenn ein Objekt zerstört wird:
class DatabaseConnection {
public:
~DatabaseConnection() {
// Datenbankverbindung schließen
closeConnection();
}
private:
void closeConnection() {
// Bereinigungslogik
}
};
Methodentypen und Eigenschaften
Methodentyp |
Beschreibung |
Haupteigenschaften |
Inline-Methoden |
Innerhalb der Klasse definiert |
Compileroptimierung |
Const-Methoden |
Kann den Objektzustand nicht ändern |
Nur Leseoperationen |
Statische Methoden |
Gehören zur Klasse, nicht zum Objekt |
Gemeinsam für alle Instanzen |
Inline-Methoden
Inline-Methoden werden am Aufrufstandort für Leistung ausgedehnt:
class Point {
public:
// Inline-Methode
inline double getDistance() {
return sqrt(x*x + y*y);
}
private:
double x, y;
};
Const-Methoden
Const-Methoden garantieren, dass sie den Objektzustand nicht ändern:
class Rectangle {
public:
// Const-Methode
double getArea() const {
return width * height;
}
private:
double width;
double height;
};
Statische Methoden
Statische Methoden gehören zur Klasse, nicht zu spezifischen Instanzen:
class MathUtility {
public:
// Statische Methode
static int square(int x) {
return x * x;
}
// Statische Methode zum Zählen von Instanzen
static int getInstanceCount() {
return instanceCount;
}
private:
static int instanceCount;
};
Erweiterte Techniken für Memberfunktionen
- Method Overloading
- Standardargumente
- Referenz- und Zeigerparameter
Beispiel für Method Overloading
class Print {
public:
void display(int x) {
cout << "Integer: " << x << endl;
}
void display(string s) {
cout << "String: " << s << endl;
}
};
Best Practices
- Halten Sie Methoden fokussiert und modular
- Verwenden Sie const für schreibgeschützte Methoden
- Minimieren Sie die Komplexität von Methoden
- Befolgen Sie das Prinzip der Single Responsibility
Komplettes Beispiel im LabEx-Umfeld
#include <iostream>
#include <string>
class BankAccount {
private:
string accountHolder;
double balance;
public:
// Konstruktor
BankAccount(string name, double initialBalance) {
accountHolder = name;
balance = initialBalance;
}
// Methode zum Einzahlen
void deposit(double amount) {
balance += amount;
}
// Const-Methode zum Abfragen des Saldos
double getBalance() const {
return balance;
}
// Methode zum Anzeigen der Kontoinformationen
void displayInfo() {
cout << "Kontoinhaber: " << accountHolder << endl;
cout << "Guthaben: $" << balance << endl;
}
};
int main() {
BankAccount account("John Doe", 1000);
account.deposit(500);
account.displayInfo();
return 0;
}
Mit dem beherrschen von Memberfunktionen können Entwickler organisiertere, effizientere und wartbarere C++-Klassen erstellen.