Best Practices
Prinzipien für die Vererbung
Komposition statt Vererbung
class Engine {
public:
void start() { /* ... */ }
};
class Car {
private:
Engine engine; // Komposition statt Vererbung
public:
void startCar() {
engine.start();
}
};
Schnittstellen-Segmentierung
Schlechte Praxis |
Gute Praxis |
Große, monolithische Basisklassen |
Kleine, fokussierte Schnittstellen |
Mehrere nicht verwandte Methoden |
Schnittstellen mit Einzelverantwortung |
Speicherverwaltung und Vererbung
Virtueller Destruktor
class BaseClass {
public:
virtual ~BaseClass() {
// Sicherstellung der korrekten Bereinigung abgeleiteter Klassen
}
};
Verwendung von Smart Pointern
#include <memory>
class Resource {
public:
void process() { /* ... */ }
};
class Manager {
private:
std::unique_ptr<Resource> resource;
public:
Manager() : resource(std::make_unique<Resource>()) {}
};
Polymorphe Vererbungsmuster
classDiagram
AbstractBase <|-- ConcreteImplementation1
AbstractBase <|-- ConcreteImplementation2
AbstractBase : +virtual void execute()
ConcreteImplementation1 : +execute()
ConcreteImplementation2 : +execute()
Fehlerbehandlung und Ausnahmen
RAII (Resource Acquisition Is Initialization)
class ResourceManager {
private:
std::unique_ptr<Resource> resource;
public:
ResourceManager() {
try {
resource = std::make_unique<Resource>();
} catch (const std::bad_alloc& e) {
// Behandlung von Speicherallokationsfehlern
}
}
};
Vermeidung tiefer Vererbungshierarchien
Tiefe |
Empfehlung |
1-2 Ebenen |
Akzeptabel |
3-4 Ebenen |
Vorsicht |
5+ Ebenen |
Refactoring |
Moderne C++-Techniken
Verwendung von override
und final
class Base {
public:
virtual void method() {}
};
class Derived : public Base {
public:
void method() override final {
// Verhindert weitere Überschreibungen
}
};
Kompilierung und Best Practices
Um Best Practices sicherzustellen, kompilieren Sie mit strengen Warnungen:
g++ -std=c++17 -Wall -Wextra -Werror your_code.cpp -o your_program
Wichtige Erkenntnisse
- Bevorzugen Sie Komposition gegenüber Vererbung.
- Verwenden Sie virtuelle Destruktoren.
- Nutzen Sie Smart Pointer.
- Halten Sie Vererbungshierarchien flach.
- Verwenden Sie moderne C++-Funktionen.
Erkunden Sie erweiterte Vererbungstechniken mit LabEx, um ein erfahrener C++-Entwickler zu werden.