जैसा कि मैं देख सकता हूं, कई वास्तविक-दुनिया C ++ परियोजनाओं में बड़े पैमाने पर स्मार्ट पॉइंटर्स का उपयोग किया जाता है।
यद्यपि RAII और स्वामित्व हस्तांतरण का समर्थन करने के लिए कुछ प्रकार के स्मार्ट पॉइंटर्स स्पष्ट रूप से फायदेमंद होते हैं, लेकिन "कचरा संग्रह" के तरीके के रूप में , डिफ़ॉल्ट रूप से साझा पॉइंटर्स का उपयोग करने की प्रवृत्ति भी है , ताकि प्रोग्रामर को आवंटन के बारे में सोचने की ज़रूरत न पड़े ।
बोहेम जीसी जैसे उचित कचरा संग्रहकर्ता को एकीकृत करने की तुलना में साझा पॉइंटर्स अधिक लोकप्रिय क्यों हैं ? (या क्या आप बिल्कुल सहमत हैं, कि वे वास्तविक जीसी से अधिक लोकप्रिय हैं?)
मैं संदर्भ-गणना पर पारंपरिक जीसी के दो लाभों के बारे में जानता हूं:
- पारंपरिक जीसी एल्गोरिदम में संदर्भ-चक्र के साथ कोई समस्या नहीं है ।
- संदर्भ-गणना आम तौर पर एक उचित GC की तुलना में धीमी होती है।
संदर्भ-गिनती स्मार्ट पॉइंटर्स का उपयोग करने के क्या कारण हैं?
std::unique_ptr
पर्याप्त है और जैसे कि रन-टाइम प्रदर्शन के मामले में कच्चे पॉइंटर्स पर शून्य-ओवरहेड है।std::shared_ptr
कोड के पीछे के इरादे की स्पष्ट समझ - हर जगह का उपयोग करके आप स्वामित्व अर्थ-शास्त्र को अस्पष्ट कर देंगे, स्वचालित संसाधन प्रबंधन के अलावा स्मार्ट पॉइंटर्स का एक बड़ा लाभ खो देंगे।