2010-05-14 9 views
15

टेम्पलेट तो, मैं एक दिलचस्प विधि हस्ताक्षर है कि मैं काफी समझ में नहीं आता है, यह की तर्ज पर चला गया में आए समझें कि "वर्ग" कीवर्ड पैरामीटर के रूप में उपयोग किया जा रहा है, यह वहां क्यों है? क्या यह निर्दिष्ट करना आवश्यक है या यह पूरी तरह से सतही है?सी ++, एक पद्धति के लिए पैरामीटर के रूप में वर्ग, नहीं

+0

के लिए सूचक है घोषणा और मैं यह जानकर पागल हो रहा था कि इसका क्या अर्थ है। 'कक्षा फू { निजी: कक्षा बार * पॉइंटर टॉबर; } ' – Vicro

उत्तर

16

यह कक्षा की एक अगली घोषणा है। यह प्रभावी रूप से

class SomeClassName; 
void Initialize(std::vector<std::string> & param1, SomeClassName * p); 

ऐसी कई स्थितियां हैं जिनमें आगे की घोषणा उपयोगी है; this answer to another question में आगे की घोषणा के साथ आप कर सकते हैं और चीजों की एक पूरी सूची नहीं है)।

+0

क्या यह आगे की घोषणा के रूप में कार्य करता है? – ra170

+0

@ ra170: हाँ, यह करता है। –

+1

"लेकिन आपको क्लास के उदाहरण के लिए पॉइंटर या संदर्भ का उपयोग करने की आवश्यकता है" -> यदि आपके पास इस मामले में एक गैर-परिभाषा फ़ंक्शन घोषणा है, तो आप मान-पैरामीटर के साथ ठीक हो सकते हैं। –

1

यह सतही नहीं है। यह आपको "SomeClassName" को पैरामीटर के रूप में निर्दिष्ट करने की अनुमति देता है भले ही "SomeClassName" अभी तक परिभाषित नहीं किया गया है।

+0

क्या यह आगे की घोषणा के रूप में कार्य करता है? – ra170

1

सबसे सतही।

struct x { 
    int member; 
    char member2; 
}; 

कि का उपयोग करने के लिए आपको struct x whatever उपयोग करने के लिए: सी में, जब आप एक struct परिभाषित करते हैं। आप (struct यह पूर्ववर्ती के बिना) अपने आप में एक नाम के रूप में x उपयोग करना चाहते हैं आप का उपयोग करने के लिए है एक typedef:

typedef struct x { 
    int member; 
    char member2; 
} x; 

सी ++ में, हालांकि, पहले (typedef के बिना) के रूप में लगभग एक ही प्रभाव पड़ता है दूसरा (दोनों x को परिभाषित करें ताकि आप इसे पहले से ही struct के बिना उपयोग कर सकें)। सी ++ में, class अनिवार्य रूप से struct जैसा ही है, सिवाय इसके कि यह public (सदस्यों और विरासत दोनों के लिए) के बजाय private पर डिफ़ॉल्ट है।

फ़ंक्शन घोषणा के बिंदु पर class की कोई परिभाषा नहीं है, तो एकमात्र जगह एक अंतर है।

0

यह एक ही आप लिखते हैं के रूप में किया जाता है:

for(int i=0;i<10;i++) 

रूप

int i; 
for(i=0;i<10;i++) 

वर्ग घोषणा एक परिभाषा है और मैं एक वर्ग के सदस्य के रूप में अच्छी तरह से देखा यह

+0

चर के दायरे मैं अलग है। – iOS

+0

मूल प्रश्न का उत्तर नहीं देता है। – prapin

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

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