Avatar ·

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; } ```