मैंने हाल ही में std::auto_ptr
की सराहना शुरू कर दी है और अब मैंने पढ़ा है कि यह deprecated होगा।क्या मुझे auto_ptr का उपयोग करना बंद कर देना चाहिए?
- एक कारखाने
- संचार स्वामित्व हस्तांतरण
उदाहरण के मूल्य में वापसी:
// Exception safe and makes it clear that the caller has ownership.
std::auto_ptr<Component> ComponentFactory::Create() { ... }
// The receiving method/function takes ownership of the pointer. Zero ambiguity.
void setValue(std::auto_ptr<Value> inValue);
समस्याग्रस्त प्रतिलिपि अर्थ विज्ञान के बावजूद मैं auto_ptr
उपयोगी पाते हैं मैं दो स्थितियों के लिए उपयोग शुरू कर दिया। और उपर्युक्त उदाहरणों के लिए एक विकल्प प्रतीत नहीं होता है।
क्या मुझे बस इसका उपयोग करना जारी रखना चाहिए और बाद में std::unique_ptr
पर स्विच करना चाहिए? या यह टाला जा सकता है?
मैं जो भी प्रोजेक्ट आप काम कर रहा हूं, उसके लिए मैं 'auto_ptr' के साथ छड़ी कहूंगा, और जब भी आप कुछ नया शुरू करेंगे स्विच करें, ताकि आप उन्हें एक साथ मिलाकर जटिलता नहीं बना रहे। (मैं उस 'कंपाइलर' को मान रहा हूं जिसका आप समर्थन 'unique_ptr' का उपयोग करते हैं।) –
'std :: auto_ptr' को बहिष्कृत नहीं किया जा रहा है क्योंकि यह उपयोगी नहीं है, लेकिन क्योंकि' std :: unique_ptr' वह सब कुछ करता है जो पहले से ही करता है, बस बेहतर तो क्या आप 'std :: unique_ptr' पर स्विच करते हैं या नहीं, 'std :: auto_ptr' का उपयोग बंद करने का कोई कारण नहीं है। –
एरिक लिपर्ट ने इस बारे में बहुत समय पहले लिखा था। यह एक दिलचस्प पठन है: http://blogs.msdn.com/b/ericlippert/archive/2003/09/16/53016.aspx –