आम तौर पर स्मृति प्रबंधन में प्रयोग किया जाता है कि सामान्य कोड सी ++ में से
new
malloc
बनाई गई है गतिशील स्मृति के संदर्भ हर दूसरे भाषा की तरह व्यवहार करता है। यदि आप एक चर बनाते हैं या इसे वापस करते हैं, तो यह लक्ष्य पक्ष पर कॉपी और सुलभ है।
int a = addTwo(3);
आपके लौटाए गए मूल्य की एक प्रति प्राप्त करता है। यदि लौटाया गया मूल्य एक क्लास कॉपी ऑपरेटर है। तो जब तक आप नए और मॉलोक के साथ काम नहीं करते हैं, तब तक आपको मेमोरी मैनेजमेंट की परवाह नहीं है।
एक अतिरिक्त टिप्पणी जो महत्वपूर्ण
void func(std::string abc)
{
// method gets a copy of abc
}
void func(std::string& abc)
{
// method gets the original string object which can be modified without having to return it
}
void func(const std::string& abc)
{
// method gets the original string object abc but is not able to modify it
}
तीन लाइनों का अंतर है बहुत महत्वपूर्ण है क्योंकि अपने कार्यक्रम इनपुट पैरामीटर है कि आप सामान्य रूप से बनाने के लिए नहीं करना चाहता था की प्रतियां बनाने में बहुत समय को छोड़ सकता है।
उदा।
bool CmpString(std::string a, std::string b)
{
return a.compare(b);
}
वास्तव में महंगा है क्योंकि स्ट्रिंग्स ए और बी हमेशा कॉपी की जाती हैं।
bool CmpString(const std::string& a, const std::string& b)
का उपयोग करें।
यह महत्वपूर्ण है क्योंकि डिफ़ॉल्ट रूप से कोई भी प्रतिबिंबित वस्तुओं का उपयोग नहीं किया जाता है।
'सी' के रूप में पुनः प्राप्त किया गया क्योंकि यहां कोई और C++ नहीं है, जैसा कि नीचे किसी और द्वारा इंगित किया गया है। – ChrisInEdmonton
सी ++ के रूप में टेटाग किया गया, क्योंकि यह निश्चित रूप से एक सी ++ प्रश्न है, और प्रश्नकर्ता स्पष्ट रूप से सी ++ के बारे में पूछता है। –
ओपी, कोई आवश्यकता नहीं है कि आप किसी भी उत्तर को स्वीकार करें। –