दिलचस्प पोस्ट
पावरशेल्ड (प्रतिस्थापन) फ़ंक्शन के लिए फ़ंक्शन पास करना फ़ायरफ़ॉक्स में वेबआरटीसी ऑफ़र टूअरेसेवऑडियो त्रुटि "प्रीफ़ेस" यूआरएल योजना आईओएस 10 (बीटा 1 और 2) में नहीं पहनेगी आत्म-इनकॉल्विंग समारोह से पहले सेमीकोलन? जावा में सूचियों की सूची के साथ कार्य करना जेएमएम शुरू करते समय एक्सएमएस और एक्सएमएक्स पैरामीटर क्या हैं? Yii2 REAST क्वेरी त्रुटि: कोई संसाधन नहीं मिला जो दिए गए नाम से मेल खाता है ('चिह्न' के साथ 'चिह्न' / चिह्न '@' Windows XP समर्थन के साथ स्थिर एमएसवीवी रनटाइम का उपयोग करते हुए, VS2012 के तहत स्थिर रूप से क्यूटी 4.8 / 5.2 कैसे बना सकता है? शब्दकोश में तत्वों का क्रम PHPMailer GoDaddy सर्वर SMTP कनेक्शन से इनकार किया क्या आप किसी दूसरे धागे से यूआई तत्वों तक पहुंच सकते हैं? (सेट न करें) NSArray को अपने NSDate गुणों से कस्टम ऑब्जेक्ट के अनुसार क्रमबद्ध करें सीएसएस: नीचे और केन्द्रित करने के लिए तय टोमैक एक्लिप्स में शुरू हुआ लेकिन http: // localhost: 8085 /

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

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

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

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

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

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

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

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

मानक 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