C++ में बेस क्लास कंस्ट्रक्टर को कॉल करने के नियम
सभी को नमस्ते! मैंने अभी C++ सीखना शुरू किया है और इनहेरिटेंस के दौरान बेस क्लास कंस्ट्रक्टर को कॉल करने के नियमों को समझ नहीं पा रहा हूँ। मान लीजिए, मेरे पास एक सरल क्लास `Animal` और एक क्लास `Dog` है जो इससे इनहेरिट करता है:
```cpp
class Animal {
public:
Animal() { cout << "Animal created\n"; }
Animal(string name) : name_(name) { cout << "Animal " << name << " created\n"; }
private:
string name_;
};
class Dog : public Animal {
public:
Dog() { cout << "Dog created\n"; }
Dog(string name) { cout << "Dog " << name << " created\n"; }
};
```
जब मैं बिना पैरामीटर के `Dog` ऑब्जेक्ट बनाता हूँ, तो डिफ़ॉल्ट `Animal()` कंस्ट्रक्टर कॉल होता है, और यह तर्कसंगत है। लेकिन जब मैं `Dog d("Buddy")` लिखता हूँ, तो पहले `Animal()` कॉल होता है, और फिर मेरा `Dog(string name)` कंस्ट्रक्टर। इस वजह से `Animal` में `name_` फील्ड खाली रह जाता है, भले ही मैं नाम पास कर रहा हूँ! मैं कैसे सुनिश्चित करूँ कि नाम बेस क्लास तक पहुँचे? और सामान्यतः, बेस क्लास कंस्ट्रक्टर को कॉल करने के क्या नियम हैं? क्या हम चुन सकते हैं?