C++ में ऑब्जेक्ट के बजाय पॉइंटर का उपयोग क्यों करें?
सभी को नमस्ते! मैं एक शुरुआती C++ डेवलपर हूं और अक्सर ऐसी स्थिति का सामना करता हूं जहां मुझे समझ नहीं आता कि कोड में सामान्य ऑब्जेक्ट के बजाय पॉइंटर का उपयोग क्यों किया जाता है। उदाहरण के लिए, मैं एक गेम कैरेक्टर को मैनेज करने के लिए क्लास लिखता हूं:
```cpp
class Monster {
public:
Monster(const std::string& name) : name(name) {}
void attack() { /* ... */ }
private:
std::string name;
};
void processMonster(Monster m) { // ऑब्जेक्ट को वैल्यू से पास कर रहा हूं
m.attack();
}
int main() {
Monster goblin("Goblin");
processMonster(goblin); // कॉपी! और अगर मॉन्स्टर भारी हो?
return 0;
}
```
मैं देखता हूं कि कई अनुभवी प्रोग्रामर ऐसे लिखते हैं:
```cpp
void processMonster(Monster* m) {
m->attack();
}
```
या फिर `new` के जरिए ऑब्जेक्ट बनाते हैं:
```cpp
Monster* boss = new Monster("Boss");
```
मेरे कुछ सवाल हैं:
1. अगर सीधे ऑब्जेक्ट के साथ काम कर सकते हैं तो पॉइंटर की जरूरत क्यों है?
2. पॉइंटर कब उपयोग करना बेहतर है और रेफरेंस कब?
3. `M