दिलचस्प पोस्ट
मैं कैसे एक चरित्र bash में दोहरा सकते हैं? संहिता ब्लॉक प्रत्येक कार्य को कोष्ठक के साथ पारित किया जाता है, लेकिन 'do' – 'end' (ruby) के साथ नहीं RepaintManager से अपवाद कैसे उत्पन्न करें क्या Google एंड्रॉइड कभी भी .net का समर्थन करेगा? उपयोगकर्ता को बलपूर्वक बंद करने के बावजूद किसी सेवा को स्वचालित रूप से कैसे पुनरारंभ करें? दृश्य स्टूडियो में FFmpeg का उपयोग करें पिन किए गए ऑब्जेक्ट्स क्या हैं? दिनांक समय के लिए सी # स्ट्रिंग पार्स करें $ (यह) फ़ंक्शन में काम नहीं करता है टैबब्लॉक बनाम टैबब्लॉक एक मौजूदा jQuery फ़ंक्शन विस्तारित करना SQL सर्वर, डिफ़ॉल्ट आवृत्ति के लिए एक नामित आवृत्ति परिवर्तित करें? क्यों अधिक जावास्क्रिप्ट मूल कार्य उनके अनुभवहीन कार्यान्वयन से धीमी हैं? क्या मैं एक दूसरे के संबंध में दो सूचियों को सॉर्ट कर सकता हूँ? क्या ऐसस्टोर में एक एप के लिए अपडेट के माध्यम से एनएसयूएसएर डिफॉल्ट्स जारी रहती हैं?

चाल की कार्रवाई की स्वत: पीढ़ी के लिए नियम क्या हैं?

C ++ 98 में, C ++ कंपाइलर स्वचालित रूप से प्रतिलिपि निर्माता और प्रतिलिपि असाइनमेंट ऑपरेटर सदस्य-प्रतिलिपि के माध्यम से उत्पन्न कर सकता है, उदा।

struct X { std::string s; std::vector<int> v; int n; }; 

सदस्य-प्रतिलिपि का उपयोग करते हुए संकलक स्वचालित रूप से प्रतिलिपि कन्स्ट्रस्ट्रक्टर और प्रतिलिपि असाइनमेंट ऑपरेटर X लिए बनाता है।

लेकिन कदम सीमेंटिक्स के साथ सी ++ 11 में चीजें कैसे बदलती हैं?

क्या चालन निर्माता और चालन ऑपरेटर स्वचालित रूप से उत्पन्न होता है, जैसे कि प्रतिलिपि कन्स्ट्रक्टर और प्रतिलिपि असाइनमेंट ऑपरेटर?

क्या ऐसे मामलों में स्थानांतरित ऑपरेशन स्वचालित रूप से उत्पन्न नहीं होते हैं?

Solutions Collecting From Web of "चाल की कार्रवाई की स्वत: पीढ़ी के लिए नियम क्या हैं?"

मानक Ch से 12 – विशेष सदस्य कार्य

पैरा 12.8 क्लास ऑब्जेक्ट्स को कॉपी और बढ़ाना (जोर खान)

9 अगर एक कक्षा एक्स की परिभाषा स्पष्ट रूप से एक चालन निर्माता घोषित नहीं करती है, तो एक को निस्तारण रूप से घोषित किया जाएगा यदि और केवल तभी

– एक्स में उपयोगकर्ता द्वारा घोषित प्रति कन्स्ट्रक्टर नहीं है,

– एक्स में उपयोगकर्ता-घोषित कॉपी असाइनमेंट ऑपरेटर नहीं है,

– एक्स में उपयोगकर्ता-घोषित चाल असाइनमेंट ऑपरेटर नहीं है, और

– एक्स में कोई उपयोगकर्ता-घोषित नाशक नहीं है

[नोट: जब चालक निर्माता को स्पष्ट रूप से घोषित नहीं किया गया है या स्पष्ट रूप से आपूर्ति नहीं की गई है, तो अन्यथा चालक को लागू करने वाले अभिव्यक्ति के बजाय प्रतिलिपि कन्स्ट्रक्टर का उपयोग कर सकते हैं। -नोट नोट]

फिर 11 डिफ़ॉल्ट चालन निर्माता को हटाने के नियमों को बताता है

1 1 । एक निहित-घोषित कॉपी / चाल निर्माता, इसकी कक्षा का एक इनलाइन सार्वजनिक सदस्य है। क्लास एक्स के लिए एक डिफॉल्ट कॉपी / स्थानांतरण कन्स्ट्रक्टर को एक्स के रूप में हटाए गए (8.4.3) के रूप में परिभाषित किया गया है:

– एक गैर-तुच्छ संबंधित कंस्ट्रक्टर और एक्स के साथ एक संस्करण सदस्य एक यूनियन-जैसी क्लास है,

– क्लास प्रकार एम (या उसकी सरणी) का एक गैर-स्टैटिक डाटा सदस्य जिसे कॉपी / कॉपी नहीं किया जा सकता क्योंकि अधिभार रिज़ॉल्यूशन (13.3), जैसा कि एम के संबंधित कन्स्ट्रक्टर पर लागू होता है, एक अस्पष्टता या एक फ़ंक्शन जो कि हटाए गए या अनुपयोगी है डिफॉल्ट कन्स्ट्रक्टर,

– एक प्रत्यक्ष या आभासी आधार वर्ग बी, जिसे कॉपी / स्थानांतरित नहीं किया जा सकता क्योंकि ओवरलोड रिज़ॉल्यूशन (13.3), जैसा कि बी के संबंधित कन्स्ट्रक्टर पर लागू होता है, एक अस्पष्टता या फ़ंक्शन जो डिलीटेड कन्स्ट्रक्टर से हटाया या अनुपलब्ध है,

– किसी भी प्रत्यक्ष या आभासी बेस क्लास या गैर-स्थिर डाटा सदस्य जो एक डिस्ट्रक्टर के साथ एक प्रकार का है जिसे हटाए गए या डिफॉल्ट कन्स्ट्रक्टर से अनुपलब्ध है, या,

– प्रतिलिपि निर्माता के लिए, रैवल्यू संदर्भ प्रकार का एक गैर-स्थिर डेटा सदस्य। एक चूक चालन निर्माता जिसे हटाए जाने के रूप में परिभाषित किया गया है उसे अधिभार संकल्प (13.3, 13.4) द्वारा अनदेखा कर दिया गया है।

[नोट: एक हटाए गए कदम कन्स्ट्रक्टर अन्यथा एक आरव्यू से आरंभीकरण में हस्तक्षेप करेगा जो इसके बजाय प्रतिलिपि कन्स्ट्रक्टर का उपयोग कर सकते हैं। -नोट नोट]


इसकी जटिलता पर *

नियम कुछ हद तक भारी हो सकते हैं जटिलता को बायपास करने के लिए कुछ तकनीक का इस्तेमाल करना अच्छा है। उदाहरण हैं:

  1. अपनी कक्षाओं के बहुमत के लेखन को सरल बनाने के लिए शून्य के नियम का उपयोग करें
  2. (निहित रूप से नष्ट कर दिया गया) प्रश्न में विशेष सदस्य समारोह को स्पष्ट रूप से डिफॉल्ट किया गया; अगर यह स्पष्ट रूप से नष्ट कर दिया गया होता, तो संकलक शिकायत करेगा।

* (1) और डीआईपी (2) द्वारा टिप्पणियाँ में किए गए अंक

निकोस अथानसीउ ने एक अच्छा जवाब दिया लेकिन मैं इस उपकरण को जोड़ना चाहता था जो मुझे लगता है कि बहुत उपयोगी है।

यहां हाउदैन हनंत की प्रस्तुति " एब यूट यूट यू ववर वॉन्टेड टू नॉर्थ सिमेंटिक्स (और फिर कुछ) एसीसीयू 2014 सम्मेलन से है जो मुझे लगता है कि विशेष सदस्यों की स्वचालित पीढ़ी के नियमों का एक बहुत अच्छा अनुस्मारक है:

यहां छवि विवरण दर्ज करें

टिप्पणियों से श्री हनंत से स्पष्टीकरण:

स्लाइड यह नहीं कहती है, लेकिन लाल चौकों से बहिष्कृत व्यवहार का संकेत मिलता है Ie यदि आप नापसंद व्यवहार पर निर्भर नहीं करना चाहते हैं, तो अपने प्रतियों के दोनों सदस्यों को घोषित करें यदि आप अपने डिस्ट्रक्टर, या कॉपी सदस्यों में से एक (मूल तौर पर सी ++ 98/03 "3 का नियम" का पालन करें) को घोषित करें

मैं इस तालिका के प्रगतिशील निर्माण को प्राप्त करने के लिए स्लाइड्स को पढ़ने की सलाह देता हूं और इस बारे में विस्तृत व्याख्या है कि हम और अब यह क्यों है

अन्य प्रस्तुतीकरण यहां मिल सकते हैं: http://accu.org/index.php/articles/1901