क्या स्थानीय वर्ग, इनर क्लास और नेस्ड क्लास सी ++ में समान चीजें हैं?क्या स्थानीय वर्ग, आंतरिक वर्ग और नेस्टेड कक्षा सी ++ में समान चीजें हैं?
उत्तर
स्थानीय कक्षा और नेस्टेड वर्ग विभिन्न जानवर हैं।
ए नेस्टेड क्लास एक वर्ग है जो किसी अन्य वर्ग के दायरे में घोषित किया गया है।
ए स्थानीय वर्ग फ़ंक्शन परिभाषा के भीतर घोषित किया गया है।
आंतरिक वर्ग एक गैर मानक सी ++ शब्द है, इसलिए मुझे यकीन नहीं है कि इसे कैसे परिभाषित किया जाए।
नेस्टेड क्लास: एक अच्छा प्रलेखन here रूप
आईबीएम प्रलेखन।
संक्षिप्त करने के लिए:
- एक नेस्टेड वर्ग का नाम अपने संलग्नित क्लास करने के लिए स्थानीय है। जब तक आप स्पष्ट पॉइंटर्स, संदर्भ या ऑब्जेक्ट नामों का उपयोग नहीं करते हैं, तब तक नेस्टेड क्लास में घोषणाएं दृश्यमान वर्गों और वैश्विक चर से टाइप नाम, स्थिर सदस्य और गणक सहित दृश्य संरचनाओं का उपयोग कर सकती हैं।
- एक नेस्टेड कक्षा के सदस्य कार्य नियमित पहुंच नियमों का पालन करते हैं और उनके संलग्न कक्षाओं के सदस्यों के लिए कोई विशेष पहुंच विशेषाधिकार नहीं है।
मेरा here के इस उत्तर स्थानीय वर्गों के साथ जुड़े सूक्ष्म अंक दस्तावेजों: संलग्नित क्लास के सदस्य कार्यों एक नेस्टेड वर्ग के सदस्यों
स्थानीय वर्गों के लिए किसी विशेष उपयोग कर सकते है।
सी ++ 11 (N3290) की मसौदा का हवाला देते हुए:
9,7 नेस्टेड वर्ग घोषणाओं [class.nest]
1 एक वर्ग एक और वर्ग के भीतर घोषित किया जा सकता। किसी अन्य श्रेणी में घोषित एक वर्ग को नेस्टेड क्लास कहा जाता है।
9,8 स्थानीय वर्ग घोषणाओं [class.local]
1 एक वर्ग एक समारोह परिभाषा के दायरे में घोषित किया जा सकता; ऐसी कक्षा को स्थानीय वर्ग कहा जाता है।
सी ++ मानक में निर्दिष्ट आंतरिक वर्ग की कोई अवधारणा नहीं है।
आंतरिक कक्षाएं संलग्न कक्षा के this
संदर्भ पर कब्जा करती हैं। आंतरिक वर्ग के उदाहरणों का एक पदानुक्रम एक वृक्ष संरचना बनाता है। यह जावा के लिए अद्वितीय है।
और सी ++ में कोई आंतरिक कक्षाएं नहीं हैं। यह एक जावा अवधारणा है। –