Avatar ·

C++ में ऑब्जेक्ट स्लाइसिंग (object slicing) क्या है और इससे कैसे बचें?

नमस्ते! मैंने हाल ही में C++ सीखना शुरू किया है और मुझे एक समस्या का सामना करना पड़ा जिसे मैं समझ नहीं पा रहा हूँ। मेरे पास एक बेस क्लास `Animal` और एक डिराइव्ड क्लास `Dog` है, जो `breed` फील्ड जोड़ता है। मैंने एक फंक्शन लिखा है जो `Animal` को वैल्यू (by value) से लेता है। जब मैं इसमें `Dog` ऑब्जेक्ट पास करता हूँ, तो कंपाइलर कोई एरर नहीं देता, लेकिन फंक्शन के अंदर मैं नस्ल (breed) का डेटा खो देता हूँ। यहाँ मेरा कोड है: ```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_(breed) {} void speak() const override { std::cout << "Woof!\n"; } std::string getBreed() const { return breed_; } private: std::string breed_; }; void printAnimal(Animal a) { // यहाँ