डेटा का उपयोग सदस्यों को बताया कि संसाधनों मुक्त कर जब वे नष्ट कर रहे हैं (उर्फ आरए II)।
उदाहरण के लिए:
struct TwoStrings {
std::string string1;
std::string string2;
TwoStrings(const std::string &input) : string1(input) {
if (!input[1] == ':') {
throw std::logic_error('not a Windows absolute path');
// yes, absolute paths can begin \\, this is a toy example
}
if (input.back() == '\\') {
string2 = input;
} else {
string2 = input + "\\";
}
}
};
निर्माता फेंकता है तो (या तो logic_error
या bad_alloc
), तो पहले से ही प्रारंभ डेटा सदस्य string1
नष्ट हो जाता है, संसाधन मुक्त हो गया। उस मामले के लिए string2
भी नष्ट हो गया है, लेकिन अगर निर्माता फेंकता है तो string2
अभी भी खाली होना चाहिए, इसलिए इसका कोई विशेष प्रभाव नहीं है।
string
संसाधनों का प्रबंधन करने वाली कक्षा का एक उदाहरण है, लेकिन कई अन्य हैं। उनमें से सबसे लचीला "स्मार्ट पॉइंटर्स" कहा जाता है, और इसे किसी भी संसाधन को प्रबंधित करने के लिए कॉन्फ़िगर किया जा सकता है, न कि केवल string
जैसे अक्षरों के स्वयं आवंटित सरणी।
स्रोत
2012-10-04 08:53:02
यह क्यों बंद किया जा रहा है? यह एक मान्य क्यू है। वोट मत बंद करें क्यू क्योंकि आप इसे पसंद नहीं करते हैं या इसे समझ में नहीं आते हैं। केवल इसे वोट दें और केवल तभी जब यह एसओ पॉलिसी के अनुसार बंद होने के योग्य हो। –