2010-02-19 6 views
6

मैं सी ++ में नया हूं और मैं कुछ कोड समझने की कोशिश कर रहा हूं। डेटाटाइप के सामने * का मतलब क्या है? और क्यों विधि नाम के सामने वर्ग नाम CAStar::LinkChildसी ++ कोड को समझना; * डेटाटाइप और क्लासनाम :: विधि का क्या अर्थ है?

void CAStar::LinkChild(_asNode *node, _asNode *temp) 
{ 

} 

उत्तर

6
  1. ए * डेटा प्रकार के सामने का कहना है कि चर डेटा प्रकार के लिए सूचक, इस मामले में, एक नोड के लिए एक सूचक है। विधि में पूरे "नोड" की प्रतिलिपि पास करने के बजाय, एक स्मृति पता, या सूचक, इसके बजाय पास किया जाता है। विवरण के लिए, Pointers in this C++ Tutorial देखें।

  2. विधि नाम के सामने वर्ग का नाम निर्दिष्ट करता है कि यह CAStar कक्षा की विधि को परिभाषित कर रहा है। विवरण के लिए, Tutorial pages for Classes देखें।

+2

इसके अलावा, आप इसे फ़ंक्शन नामों को असंबद्ध करने के तरीके के रूप में सोच सकते हैं। उदाहरण के लिए, कहें कि आपके पास दो वर्ग हैं (तुच्छ उदाहरण); एक भिन्नता (फ्रैक्शन) लागू करता है और अन्य उपकरण पूर्णांक (इंटीजर) लागू करता है। दोनों वर्गों में "एड" नामक एक फ़ंक्शन हो सकता है। क्लास नाम फ्रैक्शन सहित, संकलक को पता चलेगा कि आप इंटीजर क्लास के बजाय फ्रैक्शन क्लास के लिए एड फ़ंक्शन को कार्यान्वित कर रहे हैं। –

+0

अच्छी तरह से कहा, रयान –

3

* मतलब है कि यह एक pointer है। आपको यह भी पता चलेगा कि _asNode *node_asNode* node के बराबर है।

कक्षा का नाम विधि नाम के सामने है जब विधि class { ... } के अंदर परिभाषित नहीं की जाती है। ::scope operator है।

2

क्या आप सामान्य रूप से प्रोग्रामिंग के लिए नए हैं, या केवल सी ++ के लिए? यदि आप प्रोग्रामिंग के लिए नए हैं, तो आप शायद कुछ कक्षाएं लेना चाहते हैं। यदि आप सी ++ के लिए बिल्कुल नए हैं, तो आप Practical C++ Programming को ऑनलाइन C++ Primer पर पढ़ने का प्रयास कर सकते हैं।

अपने विशिष्ट प्रश्न के बारे में: चर घोषणा में, एक तारक का अर्थ है "इस एक सूचक है":

 
int * pointer; 

यह भी शामिल किया गया समारोह घोषणाओं/प्रोटोटाइप, जहां चर अपने उदाहरण के रूप में, घोषित कर रहे हैं।

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

 
printf("memory address:%d value:%d", pointer, *pointer); 

आप ध्यान दें कि स्मृति पता अप्रत्याशित रूप से बदल जाएगा, प्रोग्राम की स्थिति पर निर्भर करता है जब यह मुद्रित है जाएगा। एक साधारण कार्यक्रम में, आप परिवर्तन नहीं देखेंगे, लेकिन एक जटिल कार्यक्रम में, आप करेंगे।

+0

मैं सी ++ के लिए नया हूँ। मैंने ज्यादातर php, as3, और C# में काम किया है। लेकिन सी ++ में कभी नहीं। लेकिन इन प्रतिक्रियाओं को सुनकर मैं देख रहा हूं कि सी ++ अलग-अलग है। एक वर्ग के बाहर विधियों की घोषणा की तरह। लेकिन सूचना के लिए धन्यवाद। – numerical25

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