Was ist Objekt-Slicing (object slicing) in C++ und wie kann man es vermeiden?
Hallo! Ich habe vor kurzem angefangen, C++ zu lernen, und bin auf ein Problem gestoßen, das ich nicht verstehen kann. Ich habe eine Basisklasse `Animal` und eine abgeleitete Klasse `Dog`, die ein Feld `breed` hinzufügt. Ich habe eine Funktion geschrieben, die `Animal` by value nimmt. Wenn ich ein `Dog`-Objekt an sie übergebe, gibt der Compiler keinen Fehler aus, aber in der Funktion verliere ich die Daten über die Rasse (Feld `breed`). Hier ist mein Code:
```cpp
#include
#include
class Animal {
public:
Animal(const std::string& name) : name_(name) {}
virtual void speak() const { std::cout << "Animal sound\n"; }
std::string getName() const { return name_; }
private:
std::string name_;
};
class Dog : public Animal {
public:
Dog(const std::string& name, const std::string& breed)
: Animal(name), breed_(bre
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen
Blogs
Arbeiten mit Datenbanken in Rust: PostgreSQL und MongoDB
Singleton in C++: Wie funktioniert es unter der Haube? Analyse der legendären Frage
Dependency Injection in C++: vollständiger Leitfaden für Anfänger
Verkettung von std::vector in C++: 3 beste Methoden mit Beispielen