2011-01-31 21 views
29

सी ++ में कक्षाएं कैसे घोषित की जा सकती हैं public, private, या protected?सी ++ कक्षाएं (सार्वजनिक, निजी, और संरक्षित)

+1

जैसा कि आप चाहते हैं कि कोई कक्षा का उपयोग करने में सक्षम न हो? एक वर्ग को उपclassed किया जा सकता है: यानी कक्षा ए {निजी: कक्षा बी {}; }; –

+0

यह आपके लिए उपयोगी हो सकता है: http://www.linuxquestions.org/questions/programming-9/public-private-protected-c-215399/#post1098220 – KyleWpppd

+0

इस प्रश्न के लिए नज़दीकी वोट क्यों है? यह पूछने के लिए एक बिल्कुल उचित सवाल की तरह लगता है। – templatetypedef

उत्तर

36

C++ में एक पहुँच विनिर्देशक तरीका है कि वहाँ होने एक पूरे वर्ग का बोध भी नहीं है जावा या सी # में। यदि कोड के एक टुकड़े में कक्षा की दृश्यता है, तो वह उस वर्ग के नाम का संदर्भ दे सकता है और इसे कुशल बना सकता है। उस ने कहा, इस पर कुछ प्रतिबंध हैं। सिर्फ इसलिए कि आप किसी वर्ग का संदर्भ दे सकते हैं इसका मतलब यह नहीं है कि आप इसे तुरंत चालू कर सकते हैं, उदाहरण के लिए, क्योंकि निर्माता को निजी चिह्नित किया जा सकता है। इसी तरह, यदि कक्षा किसी अन्य वर्ग के निजी या संरक्षित अनुभाग में घोषित एक नेस्टेड कक्षा है, तो कक्षा उस वर्ग और उसके दोस्तों के बाहर पहुंच योग्य नहीं होगी।

5

यह निर्भर करता है कि आप सदस्यों या विरासत का मतलब है या नहीं। आपके पास 'private class' नहीं हो सकता है।

class Foo 
{ 
public: 
Foo() {} //public ctr 
protected: 
void Baz() //protected function 
private: 
void Bar() {} //private function 
} 

या विरासत:

class Foo : public Bar 
class Foo : protected Bar 
class Foo : private Bar 
22

दूसरे के अंदर एक वर्ग नेस्टिंग द्वारा:

class A 
{ 
public: 
    class B {}; 
protected: 
    class C {}; 
private: 
    class D {}; 
}; 
4

आप ग्राहकों को अपने इंटरफ़ेस को प्रकाशित न करके "निजी कक्षाएं" लागू कर सकते हैं।

मुझे "संरक्षित कक्षाएं" बनाने का कोई तरीका नहीं पता है।

संबंधित मुद्दे