डॉट के बजाय डबल कोलन क्यों?


19

यह अफवाह है कि शुरुआती सी ++ कार्यान्वयन में नाम स्थान तक पहुंचने के लिए डॉट ऑपरेटर है। एक राय है कि डॉट अधिक सुविधाजनक है कि आधुनिक डबल कोलन ऑपरेटर।

दोहरे उपनिवेश को शुरू करने के पीछे क्या तर्क था?


3
मेरे सिर के ऊपर से, C ++ आपको वर्तमान नामस्थान के बजाय वैश्विक नामस्थान में ::symbolदेखने के लिए बाध्य करने की अनुमति देता है symbol, ताकि कम से कम एक चीज़ जो बहुत भ्रामक लगे और संभवत: भाषा में अभी और अधिक वाक्यात्मक अस्पष्टता का परिचय दे। इसके बजाय डॉट ऑपरेटर का उपयोग किया गया था।
Ixrec

14
:: :: बुरी तरह से बदसूरत प्रसार :: सी ++ नाम स्थान :: संकल्प :: ऑपरेटर हर जगह :: जाना जाता है :: कोलोन :: कैंसर।
मेसन व्हीलर

1
मुझे लगता है कि यह सिमेंटिक एनालाइज़र में भ्रम पैदा करता है। डॉट का उपयोग प्रीफ़िक्सिंग विधि नामों के लिए भी किया जाता है, जो एक समान अवधारणा है और इसे अलग करना मुश्किल हो सकता है। इसे ठीक करने का यह एक स्पष्ट तरीका है।
रापली आंद्रस

2
14

5
सी पर मेसन व्हीलर के संवेदनहीन हमलों के भयानक बदसूरत प्रसार का कोई नाम नहीं है, क्योंकि इस तरह की बुराई का नाम के साथ सम्मान नहीं होना चाहिए!
जेरी कॉफिन 23

जवाबों:


14

जैसा कि जूल्स ने देखा कि यह एक तथ्य है कि प्रारंभिक C ++ कार्यान्वयन (CFront pre-1.0) में गुंजाइश पहचान के लिए एक बिंदु था।

सी विद क्लासेस (1980) में भी डॉट का इस्तेमाल किया गया था । वास्तव में यह वर्गों से एक सरल स्निपेट है : सी भाषा 1 के लिए एक सार डेटा प्रकार सुविधा :

class stack {
    char    s[SIZE];  /* array of characters */
    char *  min;      /* pointer to bottom of stack */
    char *  top;      /* pointer to top of stack */
    char *  max;      /* pointer to top of allocated space */
    void    new();    /* initialization function (constructor) */
public:
    void push(char);
    char pop();
};

char stack.pop()
{
    if (top <= min) error("stack underflow");
    return *(−−top);
}

(यह कोड इस बात का उदाहरण था कि कैसे सदस्य कार्यों को आमतौर पर "अन्यत्र" परिभाषित किया गया था)

::करने के लिए अतिरिक्त में से एक था वर्ग के साथ सी सी उपज ++ के लिए पेश किया।

इसका कारण स्वयं स्ट्रॉस्ट्रुप ने दिया है:

C के साथ कक्षाओं में, एक डॉट का उपयोग किसी वर्ग की सदस्यता के साथ-साथ किसी विशेष वस्तु के सदस्य के चयन को व्यक्त करने के लिए किया जाता था।

यह कुछ मामूली भ्रम का कारण था और इसका इस्तेमाल अस्पष्ट उदाहरणों के निर्माण के लिए भी किया जा सकता है। इसे समाप्त करने के लिए, ::वर्ग की सदस्यता का मतलब पेश किया .गया था और वस्तु की सदस्यता के लिए विशेष रूप से बनाए रखा गया था

( C ++ का इतिहास: 1979−1991 [2] पृष्ठ 21 - of 3.3.1)


  1. बज़्ने स्ट्रॉस्ट्रुप: "क्लासेस: एन लैंग्वेज के लिए एब्सट्रैक्ट डेटा टाइप फैसिलिटी" - बेल लेबोरेटरीज कंप्यूटर साइंस टेक्निकल रिपोर्ट CSTR Report 84। अप्रैल 1980।

  2. बज़्ने स्ट्रॉस्ट्रप: "ए हिस्ट्री ऑफ़ सी ++: 1979991991" - एटी एंड टी बेल लेबोरेटरीज मुर्रे हिल, न्यू जर्सी 07974।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.