C++ में वहाँ संकेत है, जो जावा में निहित हैं। जावा में, आप, क्योंकि जब आप लिखना
MyClass name;
आप उस वर्ग की एक वस्तु के लिए एक संदर्भ बना रहे हैं, स्पष्ट रूप से एक वस्तु बनाने के लिए की जरूरत है। इसका अर्थ यह है कि नाम एक छोटी स्मृति स्थान की पहचान करता है जिसमें वास्तविक वस्तु पता होता है। जब आप नए घर का उपयोग करके पूरे घर का निर्माण करते हैं, तो यह केवल उस पते को लौटाता है, जो उस छोटे स्मृति स्थान को सौंपा गया है।
C++ में स्मृति का एक बेहतर नियंत्रण नहीं है और आप एक वस्तु बनाने के 2 तरीके हैं: अगर आप बयान
MyClass object;
इस वस्तु ढेर में बन जाता है का उपयोग करें। इसका मतलब है कि जब समारोह वापस आता है, वस्तु नष्ट हो जाती है। ध्यान दें कि नया ऑपरेटर उपयोग किए बिना ऑब्जेक्ट स्वचालित रूप से बनाया गया है। आप ढेर विनाश लागू करने के लिए एक वस्तु चाहते हैं, आप नए ऑपरेटर, जो नव निर्मित वस्तु के लिए सूचक रिटर्न का उपयोग करेगा:
MyClass *objectPtr = new MyClass();
* वर्ग के नाम के आगे रखें, मतलब है कि आप के लिए पूछ रहे हैं उस वस्तु के आवंटन के बजाय सापेक्ष सूचक प्रकार।
याद रखें कि आप स्मृति साफ करने के लिए जब आप वस्तु की आवश्यकता नहीं है, या नहीं होगा एक स्मृति रिसाव है:
delete objectPtr;
तो, अगर आप इस तरह कर सकते हैं:
MyClass *yourfunction(bool param) {
if (param)
return new MyClass(A);
return new MyClass(B);
}
आपको पता चलेगा, वैसे भी, पॉइंटर्स सुरक्षित नहीं हैं! पॉइंटर्स पर उपयोगकर्ता नियंत्रण देने से खराब कोड, बुरी प्रथाएं और बहुत सी चीजें हो सकती हैं जो सभी में अच्छी नहीं हैं तत्काल उदाहरण: यदि आप ऑब्जेक्ट उपयोग के बाद मेमोरी को साफ़ करना भूल जाते हैं?)
इस मामले में, यह है बेहतर अगर आप स्मार्ट पॉइंटर्स का उपयोग करते हैं, लेकिन अब वास्तव में कहने के लिए बहुत कुछ है :) googling का आनंद लें!
HIH
क्या होगा यदि डिफ़ॉल्ट फल बच निकला और शहर को आतंकित कर दिया जाए? नहीं, गंभीरता से, 'बच निकले' से आपका क्या मतलब है? –
_ खूनी कुमक्वेट्स का एटैक!_ –
एक और गंभीर नोट पर: [आपके पिछले प्रश्न] के जवाब में समाधानों में समस्या क्या है (http://stackoverflow.com/questions/3285970/c-and-returning-a-null-what-worked- इन-जावा-does not को-कार्य में ग)? मुझे लगता है कि मैं यह देखने में असफल रहा हूं कि उस प्रश्न के उत्तर इस सवाल का जवाब नहीं देते हैं। –