अगर मैं सही ढंग से समझता हूं तो हमारे पास संरचना को कार्यान्वित करने के कम से कम दो अलग-अलग तरीके हैं। (स्मार्ट संकेत के साथ कार्यान्वयन के मामले सादगी के लिए बाहर रखा गया है मैं लगभग एसटीएल का उपयोग नहीं करते और यह जानने के लिए कोई इच्छा है।।)सी ++ में कक्षा संरचना को कैसे कार्यान्वित करें?
के विकिपीडिया example पर एक नजर है:
class Car
{
private:
Carburetor* itsCarb;
public:
Car() {itsCarb=new Carburetor();}
virtual ~Car() {delete itsCarb;}
};
तो, यह एक तरीका है - हमारे पास सूचक है जो को निजी सदस्य के रूप में ऑब्जेक्ट करने के लिए है। एक यह पुनर्लेखन कर सकते हैं इस तरह देखने के लिए:
class Car
{
private:
Carburetor itsCarb;
};
उस मामले में हम एक वस्तु ही निजी सदस्य के रूप में की है। (वैसे, क्या मैं इस इकाई को शब्दावली बिंदु से ऑब्जेक्ट को कॉल करने का अधिकार हूं?)
दूसरे मामले में डिफ़ॉल्ट रूप से डिफ़ॉल्ट कन्स्ट्रक्टर को कॉल करने के लिए अनिवार्य नहीं है (यदि किसी को गैर-डिफ़ॉल्ट कन्स्ट्रक्टर को कॉल करने की आवश्यकता है प्रारंभकर्ता सूची में ऐसा करना संभव है) और विनाशक। लेकिन यह एक बड़ी समस्या नहीं है ...
और निश्चित रूप से कुछ पहलुओं में इन दोनों मामलों में अधिक सराहना होती है। उदाहरण के लिए, दूसरे मामले में कार वर्ग के कॉन्स विधियों से कार्बोरेटर उदाहरण के गैर-कॉन्स विधियों को कॉल करने के लिए मना किया गया है ...
क्या कोई निर्णय लेने के लिए कोई "नियम" है? क्या मैं कुछ भूल रहा हूँ?
मुझे लगता है कि आपका मतलब है "कार श्रेणी के कॉन्स विधियों से कार्बोरेटर उदाहरण के गैर-कॉन्स्ट तरीकों को कॉल करना प्रतिबंधित है"। –
@ लॉरेंस ओउप्स। आप निश्चित रूप से सही हैं ... – Wildcat
"[मुझे] [एसटीएल] सीखने की कोई इच्छा नहीं है।" क्या? एसटीएल को अनदेखा करके आप सी ++ का एक बड़ा हिस्सा गायब हैं। – rlbond