2010-05-24 15 views

उत्तर

19

पूर्व (डॉट, .) किसी ऑब्जेक्ट के सदस्यों तक पहुंचने के लिए उपयोग किया जाता है, बाद वाला (डबल कॉलन, ::) नामस्थान या कक्षा के सदस्यों तक पहुंचने के लिए उपयोग किया जाता है।

निम्न सेटअप पर विचार करें।

namespace ns { 
    struct type 
    { 
     int var; 
    }; 
} 

इस मामले में, संरचना है, जो एक नाम स्थान का एक सदस्य है उल्लेख करने के लिए, आप :: का उपयोग करें। type के किसी ऑब्जेक्ट में चर का उपयोग करने के लिए, आप . का उपयोग करते हैं।

ns::type obj; 
obj.var = 1; 
+0

इसलिए, यदि हम किसी चीज़ तक पहुंचने के लिए ऑब्जेक्ट का उपयोग कर रहे हैं, तो हमें डॉट ऑपरेटर का उपयोग करना होगा, और यदि हम कक्षा का नाम उपयोग कर रहे हैं तो हमें :: का उपयोग करना होगा, है ना ?, क्या आप एक उदाहरण भी दे सकते हैं, यदि आप अन्यथा न लें! – defiant

+0

@oDx, यह सही है, इसलिए यदि आपके पास कक्षा का स्थैतिक चर या फ़ंक्शन है, तो आप उन्हें संदर्भित करने के लिए कक्षा के नाम से "::" का उपयोग करेंगे, जबकि यदि आपके पास सदस्य फ़ंक्शन या सदस्य चर है, तो आप इस्तेमाल करूँगा "।" कक्षा के एक उदाहरण के नाम के साथ। –

1

आप किसी ऑब्जेक्ट उदाहरण के लिए सूचक का उपयोग कर रहे हैं, तो आप का उपयोग कर वस्तु के सदस्यों का उपयोग करना होगा -> "डॉट" के स्थान पर

+1

आपको * * 'p-> m' * (* p) .m' के लिए सिंटैक्टिक चीनी नहीं है;) – fredoverflow

2

एक और तरीका है ट्रैक्टर के बारे में सोचना डॉट '::' scope resolution operator. उन मामलों में जहां एक से अधिक ऑब्जेक्ट हैं जिनके पास समान नाम है। आप स्पष्ट रूप से जो एक का उपयोग करने की घोषणा: '।'

std::min(item, item2); 

या

mycustom::min(item, item2); 

डॉट ऑपरेटर तरीके और एक वस्तु उदाहरण के गुण

Myobject myobject; 
myobject.doWork(); 
myobject.count = 0; 
// etc 

यह नहीं कहा गया था कॉल करने के लिए है, लेकिन वहाँ एक और ऑपरेटर एक वस्तु उदाहरण new साथ गतिशील रूप से बनाई गई है, तो उपयोग करने के लिए है, यह तीर ऑपरेटर है '->'

Myobject myobject2 = new Myobject(); 
myobject2->doWork(); 
myobject2->count = 1; 
संबंधित मुद्दे