मैंने सिद्धांत में सोचा कि इस सवाल का जवाब हाँ था।आधार वर्ग में कॉपी कन्स्ट्रक्टर/ऑपरेटर निजी घोषित करके व्युत्पन्न कक्षा को अनावश्यक बनाया जा सकता है?
हालांकि, व्यावहारिक रूप से, मेरा कंपाइलर (वीएस -2010) निम्न स्थितियों में शिकायत नहीं कर रहा है: मेरे पास एक सामान्य बेस क्लास है जो कुछ सामान्य इंटरफ़ेस प्रदान करता है (अभी तक कोई डेटा सदस्य नहीं है) और इससे प्राप्त विभिन्न उप और सबबक्क्लास।
class Base
{
public:
Base() {}
virtual ~Base() {}
virtual void interfaceFunction1() = 0;
virtual void interfaceFunction2() = 0;
private:
Base(const Base&); // all derived classes should be uncopyable
Base& operator=(const Base&);
// no data members
};
मेरे कंपाइलर को उप-उप-वर्गों में पूर्ण प्रति रचनाकारों को भी लागू करने के लिए यह असंभव पाया गया।
मैं कैसे सुनिश्चित कर सकता हूं कि बेस से प्राप्त हर वर्ग अनिश्चित है?
संपादित करें: अगर मैं अच्छी तरह से समझ, यह वास्तव में क्या स्कॉट Meyers वर्ग Uncopyable
(केवल एक पूर्ण इंटरफ़ेस वर्ग के लिए यहाँ विस्तारित) के बारे में उनकी विचार के साथ प्रभावी सी ++ (3 संस्करण, 2005) की मद 6 में विस्तार से बताया है। क्या अंतर है जो उसके विचार को काम करता है? (मुझे पता है कि उसे निजी रूप से विरासत मिलती है, लेकिन इससे कोई समस्या नहीं होनी चाहिए)
एक डमी डेटा सदस्य जोड़ सकते हैं। –
क्या आपने अन्य कंप्यूटर्स का परीक्षण किया था? एक व्युत्पन्न वर्ग भी प्रस्तुत करना अच्छा होगा;) (वास्तव में एक संगत उदाहरण की तरह कुछ अधिक।) – luk32
शुद्ध फ़ंक्शन का उपयोग वर्चुअल चिह्नित नहीं है? –