मेरे पास एक अनिश्चित कक्षा है। इसे कॉपी करना समस्याग्रस्त होगा। मैं गारंटी है कि यह कभी कॉपी नहीं किया जाएगा करना चाहते हैं, तो मैं इसके प्रति निर्माता deleted
बनाया:कॉपी एलिजन को कैसे कार्यान्वित करें, यह हटाए गए प्रतिलिपि निर्माता के साथ क्यों काम नहीं करेगा?
class A {
public:
A();
A(const A&) = delete;
};
A fun() {
return A();
};
int main() {
A a = fun();
};
दुर्भाग्य से, जी ++ कारण यह संकलन नहीं होगा:
t.cc: In function ‘A fun()’:
t.cc:8:12: error: use of deleted function ‘A::A(const A&)’
return A();
^
t.cc:4:5: note: declared here
A(const A&) = delete;
^
t.cc: In function ‘int main()’:
t.cc:12:13: error: use of deleted function ‘A::A(const A&)’
A a = fun();
^
t.cc:4:5: note: declared here
A(const A&) = delete;
^
लेकिन यह एक बहुत ही स्पष्ट स्थिति है जहां कॉपी एलिशन का उपयोग किया जाना चाहिए, इसलिए कॉपी कन्स्ट्रक्टर को कभी भी नहीं बुलाया जाना चाहिए। ऐसा क्यों है?
प्रतीक्षा जब तक सी ++ 17, शायद यह –
ओह गारंटी दी जाएगी। जवाब देने के लिए प्रेरित किया। –
जेस्पर आपके उत्तर को दोहरा नहीं रहा है, आपने आगामी टिप्पणियों का उल्लेख नहीं किया है जब तक कि हमारी टिप्पणियां –