C++ में ऑब्जेक्ट को वैल्यू के बजाय पॉइंटर से पास करना क्यों बेहतर है?
सभी को नमस्कार! मैंने अभी-अभी Java के बाद C++ सीखना शुरू किया है, और मुझे पॉइंटर को लेकर समझ में कुछ समस्या हो रही है।
Java में, जब मैं `MyClass obj = new MyClass()` लिखता हूँ, तो मैं हमेशा ऑब्जेक्ट के reference के साथ काम करता हूँ। लेकिन C++ में मैं `MyClass obj;` और `MyClass* obj = new MyClass();` दोनों लिख सकता हूँ। और यहाँ मैं भ्रमित हो जाता हूँ।
मान लीजिए, मेरे पास एक function है जो एक ऑब्जेक्ट लेता है और उसके साथ कुछ करता है:
```cpp
void processData(MyClass data) {
// data को बदल रहे हैं
data.setValue(42);
}
int main() {
MyClass myObj;
myObj.setValue(10);
processData(myObj);
// myObj.getValue() अभी भी 10 है, 42 नहीं! क्यों?
return 0;
}
```
मुझे उम्मीद थी कि `processData` को कॉल करने के बाद वैल्यू बदल जाएगी, लेकिन ऐसा नहीं हुआ। मुझे इसे पॉइंटर पर फिर से लिखना पड़ा:
```cpp
void processData(MyClass* data) {
data->setValue(42);
}
int main() {
MyClass* myObj = new MyClass();
myObj->setValue(10);
processData(myObj);
// अब myObj->getValue() == 42
delete myObj;
return 0;
}
```