मान लीजिए मैं:सी ++: क्या मुझे पॉइंटर सदस्यों को प्रारंभ करना चाहिए जिन्हें कन्स्ट्रक्टर बॉडी में न्यूल में असाइन किया गया हो?
// MyClass.h
class MyClass
{
public:
MyClass();
private:
Something *something_;
}
// MyClass.cpp
MyClass::MyClass()
{
something_ = new Something();
}
मैं MyClass निर्माता के निर्माता प्रारंभ सूची में नल (या 0) को something_ प्रारंभ करना चाहिए? या यह जरूरी नहीं है क्योंकि मैं इसे कन्स्ट्रक्टर के शरीर में सौंप रहा हूं? अनुशंसित अभ्यास क्या है?
क्यों न सिर्फ पहली जगह में सूचक प्रारंभ की बचत होती है? 'MyClass :: MyClass(): something_ (नया कुछ())' –
ओह, क्या यह सबसे अच्छा अभ्यास है? – User
कन्स्ट्रक्टर बॉडी में असाइनमेंट के लिए हमेशा प्रारंभ करना पसंद करते हैं। और देशी पॉइंटर के बजाय 'shared_ptr' या' scoped_ptr' जैसे स्मार्ट पॉइंटर का उपयोग करें ताकि अपवाद के मामले में क्लीनअप स्वचालित हो। –