मैं स्कॉट मेयर्स 'Effective C++ पढ़ रहा हूं। वह गुण कक्षाओं के बारे में बात कर रहा है, मुझे समझ में आया कि मुझे संकलन समय के दौरान वस्तु के प्रकार को निर्धारित करने की आवश्यकता है, लेकिन मैं वास्तव में इन वर्गों के बारे में उनकी व्याख्या को समझ नहीं पा रहा हूं? (तकनीकी दृष्टि से)कक्षाएं कैसे काम करती हैं?
उत्तर
शायद आप किसी प्रकार का जादू की उम्मीद कर रहे हैं जो प्रकार के गुणों को काम करता है। उस मामले में, निराश हो - कोई जादू नहीं है। टाइप प्रकार मैन्युअल रूप से प्रत्येक प्रकार के लिए परिभाषित हैं। उदाहरण के लिए, iterator_traits
पर विचार करें, जो टाइटरफ़ीस (उदा। value_type
) इटरेटर के लिए प्रदान करता है।
उन्हें का उपयोग करके आप
iterator_traits<vector<int>::iterator>::value_type x;
iterator_traits<int*>::value_type y;
// `x` and `y` have type int.
लिख सकते हैं लेकिन यह काम करने के लिए, वहाँ वास्तव में एक स्पष्ट परिभाषा<iterator>
हैडर, जो कुछ इस तरह पढ़ता में कहीं है:
template <typename T>
struct iterator_traits<T*> {
typedef T value_type;
// …
};
यह आंशिक विशेषज्ञताiterator_traits
T*
के प्रकार के प्रकार के प्रकार है, यानी पॉइंटर्स कुछ सामान्य प्रकार।
उसी नस में, iterator_traits
अन्य iterators के लिए विशिष्ट हैं, उदा। typename vector<T>::iterator
। प्रभावी ढंग से सिद्धांत और कार्यान्वयन के संयोजन के लिए
गुण कक्षाएं ऑब्जेक्ट के प्रकार को निर्धारित करती हैं। इसके बजाए, वे एक प्रकार के बारे में अतिरिक्त जानकारी प्रदान करते हैं, आमतौर पर विशेषता के अंदर टाइपिफ या कॉन्स्टेंट को परिभाषित करके।
+1। –
- 1. अमेज़ॅन वेब सेवाएं कैसे काम करती हैं?
- 2. कमजोर घटनाएं कैसे काम करती हैं?
- 3. लाइफकोर.com जैसी साइटें कैसे काम करती हैं?
- 4. फेसबुक अधिसूचनाएं कैसे काम करती हैं?
- 5. दो कक्षाएं एक दूसरे से संदर्भित करती हैं
- 6. PHP कक्षाएं सार्वजनिक कीवर्ड का उपयोग क्यों करती हैं?
- 7. पायथन कक्षाएं जो एक-दूसरे को संदर्भित करती हैं
- 8. .ToString() विधि कैसे काम करती है?
- 9. नींद() कैसे काम करती है?
- 10. विधि कैसे काम करती है?
- 11. क्या गिट लॉग - शाखाएं काम करती हैं?
- 12. 'class 'संपत्ति कैसे काम करती है?
- 13. लॉगआउट करते समय नौकरियां कैसे काम करती हैं?
- 14. माप की एफ # इकाइयां कैसे काम करती हैं?
- 15. 25-वर्ण उत्पाद कुंजी कैसे काम करती हैं?
- 16. सी # में एसिंक्रोनस विधियां कैसे काम करती हैं?
- 17. कक्षाएं बड़े अनुप्रयोगों को प्रबंधित करने में आपकी सहायता कैसे करती हैं?
- 18. गीथब वेबसाइट कैसे काम करती है (आर्किटेक्चर)?
- 19. आप जावास्क्रिप्ट में कक्षाएं कैसे बनाते हैं?
- 20. वर्चुअल मशीन कैसे काम करती है?
- 21. कुकीज़ एएसपी.नेट में कैसे काम करती है?
- 22. एमईएफ की निर्देशिकासूची कैसे काम करती है?
- 23. एलजेएमए संपीड़न विधि कैसे काम करती है?
- 24. एंड्रॉइड सपोर्ट लाइब्रेरी कैसे काम करती है?
- 25. पायथन की तलाश कैसे काम करती है?
- 26. आभासी विरासत कैसे काम करती है?
- 27. पायथन की रेंज कैसे काम करती है?
- 28. SQL क्वेरी कैसे काम करती है?
- 29. web2py क्वेरी अभिव्यक्ति कैसे काम करती है?
- 30. यह नियमित अभिव्यक्ति कैसे काम करती है?
कोई जादू के लिए +1। हालांकि, क्या कुछ लक्षण नहीं हैं (उदाहरण के लिए सी ++ 0x मानक लाइब्रेरी में) जिन्हें विश्वसनीय रूप से केवल भाषा का उपयोग करके परिभाषित नहीं किया जा सकता है, और इसे कंपाइलर से काम करने के लिए विशेष "जादुई" सहायता चाहिए? – UncleBens
@UncleBens: मुझे नहीं पता कि कौन से लक्षण सी ++ 0x परिभाषित करता है लेकिन मुझे यकीन है कि सी ++ 0x से पहले ऐसा कोई गुण मौजूद नहीं है। –
* अब * एक प्रकार का जादू ['std :: underlying_type'] (http://en.cppreference.com/w/cpp/types/underlying_type) में काम कर रहा है? – Wolf