यदि मैं b
से a
को स्थानांतरित करता हूं, तो क्या यह आवश्यकb
को नष्ट करने के लिए है, या क्या मैं ऐसा करने से दूर हो सकता हूं?स्थानांतरित किए जाने वाले वस्तुओं से स्थानांतरित हो गए हैं?
यह प्रश्न optional<T>
टेम्पलेट के कार्यान्वयन के दौरान मेरे दिमाग को पार कर गया। अंश:
~optional()
{
if (initialized)
{
reinterpret_cast<T*>(data)->~T();
}
}
optional(optional&& o) : initialized(o.initialized)
{
if (initialized)
{
new(data) T(std::move(*o)); // move from o.data
o.initialized = false; // o.data won't be destructed anymore!
}
}
बेशक
, मैं सिर्फ bool initialized
एक थ्री-वैल्यूड गणन कि के बीच प्रारंभ, गैर प्रारंभ और ले जाया गया-से अलग के साथ बदल सकते थे। मैं सिर्फ यह जानना चाहता हूं कि यह सख्ती से जरूरी है या नहीं।
विनाशक का उपयोग क्यों करें? क्यों नहीं हटाएं? आपके जाने के बाद, आप इसे 0 – balki
@balki पर सेट करें: सुनिश्चित नहीं है कि आप इसे क्या प्राप्त कर रहे हैं। मेरे 'वैकल्पिक' टेम्पलेट में कोई गतिशील स्मृति नहीं है, इसलिए 'हटाने' के लिए कुछ भी नहीं है। –
fredoverflow
मैं एक ही चीज़ को लागू कर रहा था, और एक ही सवाल था! धन्यवाद! – VF1