it-swarm.com.de

Warum Doppelpunkt anstelle von Punkt?

Es ist gemunkelt , dass frühe C++ - Implementierungen einen Punktoperator für den Namespace-Zugriff hatten. Es gibt eine Meinung, dass der Punkt bequemer ist als der moderne Doppelpunktoperator.

Was war der Grund für die Einführung des Doppelpunkts?

19
Rich

Als beobachtet von Jules ist es eine Tatsache, dass frühe C++ - Implementierungen (CFront vor 1.0) einen Punkt für die Bereichsidentifizierung hatten.

Ein Punkt wurde auch in C mit Klassen (1980) verwendet. In der Tat ist dies ein einfacher Ausschnitt aus Klassen: Eine abstrakte Datentypfunktion für die C-Sprache 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);
}

(Der Code war ein Beispiel dafür, wie Mitgliedsfunktionen normalerweise "anderswo" definiert wurden.)

Das :: war eine der Ergänzungen zu C mit Klassen , die eingeführt wurden, um C++ zu erzeugen.

Der Grund wird von Stroustrup selbst angegeben:

In C mit Klassen wurde ein Punkt verwendet, um die Zugehörigkeit zu einer Klasse sowie die Auswahl eines Mitglieds eines bestimmten Objekts auszudrücken.

Dies hatte zu geringfügiger Verwirrung geführt und konnte auch zur Erstellung mehrdeutiger Beispiele verwendet werden. Um dies zu mildern, :: wurde eingeführt, um die Zugehörigkeit zur Klasse zu bedeuten, und . wurde ausschließlich für die Mitgliedschaft des Objekts aufbewahrt

( Eine Geschichte von C++: 1979-1991 [2] Seite 21 - § 3.3.1)


  1. Bjarne Stroustrup: "Klassen: Eine abstrakte Datentyp-Einrichtung für die C-Sprache" - Bell Laboratories Computer Science Technical Report CSTR-84. April 1980.

  2. Bjarne Stroustrup: "Eine Geschichte von C++: 1979-1991" - AT & T Bell Laboratories Murray Hill, New Jersey 07974.

14
manlio