2009-04-27 28 views
18

सी ++ में कभी-कभी कक्षा परिभाषा में सार्वजनिक सदस्यों को पहले घोषित किया जाता है और बाद में निजीकरण किया जाता है। लेकिन चर या डेटा सदस्य सामान्य रूप से निजी होते हैं और सार्वजनिक तरीकों से उपयोग किए जाते हैं। इसलिए, इस मामले में चर का उपयोग किया जाता है लेकिन अभी तक घोषित नहीं किया गया है। इस प्रकार कोड को समझना मुश्किल हो जाता है। लेकिन मुझे बाद में निजी सदस्यों की घोषणा करने के लिए प्रसिद्ध प्रोग्रामर, साइट्स या किताबें मिलीं। क्या कोई जानता है कि कारण क्या है?सी ++ में सार्वजनिक सदस्यों के नीचे निजी सदस्यों को परिभाषित क्यों करें?

+2

डुप्लिकेट: http://stackoverflow.com/questions/308581/how-should-i-order-the-members-of-ac-class –

+1

इसके अलावा: http://stackoverflow.com/questions/778281/why -पुट-निजी-फ़ील्ड-और-विधियों-पर-द-टॉप-ऑफ-क्लास –

उत्तर

27

मैं इस तरह की चीजें करता हूं क्योंकि मेरी कक्षा के उपयोगकर्ताओं को निजी सदस्यों की परवाह नहीं है, वे सार्वजनिक एपीआई में रुचि रखते हैं (यानी मेरी कक्षा का उपयोग कैसे करें)।

इसके अलावा, हेडर फाइलों में मैं आम तौर पर केवल उन्हें परिभाषित करने के बजाय सदस्य कार्यों की घोषणा कर रहा हूं, इसलिए मैं किसी भी निजी सदस्यों को किसी भी तरह से एक्सेस नहीं कर रहा हूं।

+2

+1: हेडर फ़ाइल को कक्षा के उपयोगकर्ताओं के लिए अनुबंध के रूप में कार्य करना चाहिए। कोई कार्यान्वयन वहाँ नहीं है। – kgiannakakis

+3

बेशक, इनलाइन फ़ंक्शंस को छोड़कर। हालांकि, सबसे छोटे मामलों में, उनको कक्षा की परिभाषा के बाद आना चाहिए। – rlbond

+0

@rlbond - अच्छा बिंदु। –

2

आम तौर पर निजी सदस्य कोई फर्क नहीं पड़ता। यदि मैं यह निर्धारित करने के लिए कक्षा में देख रहा हूं कि कोड में कहीं और इसका उपयोग कैसे किया जाए, तो मुझे इसकी आंतरिक देखभाल नहीं है इसलिए निजी सदस्यों को नीचे रखें क्योंकि मुझे उनके बारे में जानने की आवश्यकता नहीं है। अगर मैं "एक वर्ग को संशोधित हूँ तो मैं समय ले लेंगे निजी सदस्यों को खोजने के लिए और जानते हैं कि वे बजाय पूरी क्लास स्किम के लिए होने के तल पर हो जाएगा

2

हम विपरीत की तरह कर रहे हैं:। My Question

मेरा तर्क यह है कि जब आप कक्षा से परिचित हो जाते हैं तो पहले सार्वजनिक इंटरफ़ेस में पेश होने के लिए अधिक फायदेमंद होता है, फिर जब आपको आवश्यकता होती है तो निजी सदस्यों में गहराई से जाएं। यदि आप निजी सदस्यों को देखकर शुरू करते हैं, तो आपके पास नहीं है संदर्भित करें कि उनका उपयोग कैसे किया जाता है।

5

निजी सदस्यों और कार्यान्वयन को हेडर फ़ाइल से छुपाया जाना चाहिए। नीचे निजी सदस्य परिभाषाओं को रखना एक ऐसा तरीका है। Pe शायद Pimpl idiom का उपयोग करना बेहतर है और एक आंतरिक संरचना में अपनी कक्षा का निजी हिस्सा छुपाएं।

20

हम ऊपर से नीचे तक पाठ पढ़ते हैं, इसलिए सबसे प्रासंगिक जानकारी शीर्ष पर होनी चाहिए। कक्षा परिभाषा में, यह सार्वजनिक इंटरफ़ेस है।

0

सहमत हुए। निजी सदस्यों को नीचे घोषित किया जाना चाहिए। मैंने पाया कि निजी सदस्यों को पहले घोषित करने का एकमात्र अच्छा कारण यह है कि जब किसी फ़ंक्शन को कस्टम डेटा प्रकार प्राप्त करने या वापस करने की आवश्यकता होती है, जैसे: वेक्टर। संकलक आपको पूछेगा कि किस प्रकार का डेटा है।

लेकिन फिर भी, उस मामले में मुझे क्या करना preffer:

{ निजी: /// नीचे और अधिक निजी थेरेस ओएफसी advicing! पहले बस प्रकार

जनता के घोषित:

निजी:

};

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