class A
{
A a;//why can't we do this
};
उत्तर
आप
class A {
A* a;
}
कर सकते हैं क्योंकि यह ए
A a;//why can't we do this
क्योंकि A
, एक अधूरी प्रकार है के रूप में यह अभी तक परिभाषित नहीं किया गया, बल्कि यह परिभाषित किया जा रहा है। और संकलक जब यह class A
अंदर देखता है A
की पूरी प्रकार पता करने की जरूरत है, और तब से A
अधूरा है, यह निर्धारित नहीं कर सकता यह आकार है, यह निर्धारित नहीं कर कर सकते हैं कितनी जगह सदस्य चर a
लेने के लिए जा रहा है, इसलिए यह संकलित नहीं करेगा।
लेकिन चूंकि एक सूचक का आकार संकलक के लिए जाने-माने है, इससे कोई फर्क नहीं पड़ता कि यह किस प्रकार का सूचक है। आप इस तरह से अपनी कक्षा में एक सूचक को परिभाषित कर सकते हैं:
class A
{
A *pA; //okay since sizeof(pA) == sizeof(void*) == well-known to the compiler!
};
ऑनलाइन डेमो: http://www.ideone.com/oS5Ir
क्योंकि वर्ग के आकार में अनंत होगा।
(यह निर्दिष्ट करने के आप अधूरा प्रकार नहीं हो सकता है के रूप में सदस्यों, केवल उन्हें संदर्भ या संकेत द्वारा भाषा के लिहाज से किया जाता है, और कहा कि A
वर्ग परिभाषा के अंत तक एक अधूरी प्रकार है।)
तो क्या होगा यदि यह अनंत आकार का है? मेमोरी आजकल सस्ता है! –
@ जेम्स: मुझे उस व्यक्ति को याद दिलाता है जो एक कार्यक्रम लिखना चाहता था जो 23 अक्षरों तक के हर संभव शब्द को बनाता है और जब मैंने उसे बताया कि उसे इसके लिए दस लाख से अधिक टीबी हार्ड डिस्क की आवश्यकता होगी तो उसे झुकाव नहीं है ... – EboMike
मुझे लगता है कि आप जावा या कुछ से आ रहे हैं? A a
टाइप A
का एक पूर्ण उदाहरण बनाएगा, जिसमें अच्छी तरह से A
है, जिसमें A
है, जिसमें A
शामिल है।
आप शायद इस बारे में सोच रहे:
class A
{
A *a; // A pointer to A, not a full instance
};
सी में की ++ आकार जानने की आवश्यकता नहीं है: आप ऐसा नहीं कर सकता, क्योंकि यह इस समस्या को खत्म करने के लिए रिकर्सिव संरचना (ऑब्जेक्ट आकार की गणना के लिए कोई अंत नहीं होगा),
स्वयं रेफरेंस का उपयोग करें ial सूचक यानी सूचक के समान वर्ग प्रकार का पता है।
class A
{
A* aObj; // Self Referential Pointer
}
इस तरह आप एक सूचक वर्ग ए की आपत्ति उठाने का हो सकता है और इस तरह से यह वर्ग एक के आकार का पता करने के लिए इससे पहले कि यह संकलन समय पर घोषित किया जाता है की आवश्यकता नहीं है।
class A {
A* a;
};
Class Date
{
int d,m,y;
static Date default_date;
};
इस उदाहरण में "- 3 संस्करण Bjarne Stroustrup सी ++ प्रोग्रामिंग भाषा" दिया जाता है।
और यह काम करता है ... कुछ स्पष्टीकरण अच्छा होगा।
- 1. हम कक्षा के अंदर नेमस्पेस उपनाम क्यों नहीं घोषित कर सकते हैं?
- 2. जावा: हम एक शीर्ष स्तर की कक्षा को निजी क्यों परिभाषित कर सकते हैं?
- 3. क्यों नहीं मैं मल्टी-घोषणा कर सकते हैं एक वर्ग
- 4. हम वर्ग स्तर पर var = = new list <string> क्यों घोषित नहीं कर सकते?
- 5. आप एक ही प्रकार के एक ही प्रकार के कई चर घोषित क्यों नहीं करते हैं?
- 6. जावा में एक अमूर्त वर्ग में एक निजी एक्सेस संशोधक क्यों है, भले ही हम एक अमूर्त वर्ग का उदाहरण नहीं बना सकते?
- 7. मैं सी # में एक वर्ग कैसे घोषित ताकि मैं श्रृंखला तरीकों कर सकते हैं?
- 8. सार कक्षाएं, हम निजी मूल्य और var वर्ग के सदस्य की घोषणा क्यों नहीं कर सकते?
- 9. हम स्थानीय चर घोषित कैसे कर सकते हैं और इसका मूल्य कैसे बढ़ा सकते हैं?
- 10. क्यों हम इंटरफ़ेस/अमूर्त वर्ग में साझा (स्थैतिक) फ़ंक्शन/विधियां नहीं कर सकते हैं?
- 11. क्या हम एक LinearLayout के अंदर स्क्रॉलव्यू का उपयोग कर सकते हैं?
- 12. हम स्ट्रेटर पॉइंटर को स्ट्रिंग क्यों नहीं कॉपी कर सकते हैं जब हम सीधे स्ट्रिंग असाइन कर सकते हैं?
- 13. क्या हम सभी एक ही आईआरपॉजिटरी की तलाश में हैं?
- 14. सी # हम स्थिर संपत्ति को ओवरराइड क्यों नहीं कर सकते?
- 15. एक आंतरिक वर्ग के नाम और एक वस्तु नाम जावा में एक ही उपयोग करना
- 16. आंतरिक वर्ग स्थिर सदस्यों की घोषणा क्यों नहीं कर सकते?
- 17. PHP में आप एक ही नाम के लिए कक्षा का विस्तार कर सकते हैं?
- 18. जीसीसी संकलन "वस्तु फ़ाइलों के प्रत्यय गणना नहीं कर सकते हैं: संकलन नहीं कर सकते"
- 19. हम सी ++ में एक अमूर्त वर्ग के लिए वस्तुएं क्यों नहीं बना सकते?
- 20. मेरी कक्षा इसके अंदर घोषित इंटरफ़ेस को क्यों लागू नहीं कर सकती?
- 21. हम संग्रहित प्रक्रिया से एक शून्य वापस कर सकते हैं
- 22. एक ही कक्षा
- 23. हम मूल्य प्रकार को क्यों लॉक नहीं कर सकते?
- 24. जावा में एक अपरिवर्तनीय कक्षा फाइनल क्यों घोषित करेगा?
- 25. क्यों लोग स्केल में किसी अन्य वस्तु के अंदर वर्ग, विशेषता, वस्तु को परिभाषित करते हैं?
- 26. क्या हम जावासवादी का उपयोग कर मौजूदा वर्ग में एक गैर-आदिम क्षेत्र जोड़ सकते हैं?
- 27. क्या हम एंड्रॉइड में एक फ़ोल्डर एन्क्रिप्ट कर सकते हैं?
- 28. सकते हैं MOQ मॉक एक कक्षा
- 29. क्या हम sandcastle तेज कर सकते हैं?
- 30. हम संरचनाओं के अंदर सदस्यों को क्यों शुरू नहीं कर सकते?
इस तरह की कक्षा तत्काल होने पर क्या होगा? यह एक ए का निर्माण करेगा, जो समय के अंत तक एक और ए बनाता है, और इसी तरह। तो, हाँ, एक कन्स्ट्रक्टर जो स्टैक ओवरफ्लो बनाता है वह अच्छी बात नहीं है। ओह, हाँ, और उदाहरण एक अनंत आकार होगा। –
यह कछुए सभी तरह से नीचे है। – jason