Avatar ·

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