अगर मैं एक खुद असाइनमेंट ऑपरेटर, जो आम तौर पर उत्पन्न डिफ़ॉल्ट असाइनमेंट ऑपरेटर से एक अलग हस्ताक्षर हैं परिभाषित:सी ++ डिफ़ॉल्ट असाइनमेंट ऑपरेटर कब पहुंच योग्य नहीं होता है?
struct B;
struct A {
void operator = (const B& b) {
// assign something
}
};
इस मामले operator = (A&)
में, डिफ़ॉल्ट असाइनमेंट ऑपरेटर करता है (या की तरह, मुझे ठीक कर लें गलत) अपरिभाषित/अप्राप्य हो जाओ?
AFAIK यह डिफ़ॉल्ट कन्स्ट्रक्टर के लिए सच है, जो मौजूद नहीं है, अगर हम किसी अन्य निर्माता को परिभाषित करते हैं। लेकिन मुझे वास्तव में यकीन नहीं है कि यह अन्य "जादू" डिफ़ॉल्ट के मामले में है या नहीं।
कारण मैं पूछता हूं: मैं इससे बचना चाहता हूं कि डिफ़ॉल्ट प्रतिलिपि निर्माता को गलती से एक अंतर्निहित प्रकार रूपांतरण के माध्यम से बुलाया जाता है। यदि यह अस्तित्व में नहीं है, तो यह कभी नहीं हो सकता है।
मानक संदर्भ के लिए धन्यवाद! यह वास्तव में मेरे उदाहरणों से कुछ और कहता है। – xtofl
आप सही हैं। मैं अपना जवाब हटा दूंगा। –
@Neil, आपको आश्चर्य हुआ कि क्या उपयोग = डिफ़ॉल्ट हो सकता है। एक जो उपलब्ध है, उसमें स्पष्ट होना है, दूसरा एक तिहाई पहुंच को बदलने के लिए है कि यह कार्यान्वयन को इनलाइन करने की अनुमति देता है जबकि कक्षा के विकास को तोड़ना नहीं है। एक अन्य औचित्य यह है कि यह सुविधा असाइनमेंट की तुलना में व्यापक है और अपवाद बनाने के लिए कोई प्रोत्साहन नहीं था, भले ही इसका कोई उपयोग न हो। – AProgrammer