Perché doppio punto invece di punto?

16

È rumorosa che le prime implementazioni in C ++ hanno avuto l'operatore punto per l'accesso allo spazio dei nomi. C'è un'opinione secondo cui il punto è più conveniente rispetto al moderno doppio operatore dei due punti.

Qual è stato il ragionamento alla base dell'introduzione del doppio colon?

    
posta Rich 02.04.2016 - 08:18
fonte

1 risposta

12

Poiché osservato da Jules è un fatto che le prime implementazioni in C ++ (CFront pre-1.0) avevano un punto per l'identificazione dell'ambito.

Un punto è stato usato anche in C with Classes (1980). In effetti questo è un semplice frammento di Classes: una funzione di tipo di dati astratti per il linguaggio C 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);
}

(il codice era un esempio di come le funzioni dei membri erano in genere definite "altrove")

La :: è stata una delle aggiunte a C con Classi introdotte per produrre C ++.

Il motivo è dato dallo stesso Stroustrup:

In C with Classes, a dot was used to express membership of a class as well as expressing selection of a member of a particular object.

This had been the cause of some minor confusion and could also be used to construct ambiguous examples. To alleviate this, :: was introduced to mean membership of class and . was retained exclusively for membership of object

( Una storia di C ++: 1979-1991 [2] pagina 21 - § 3.3.1)

  1. Bjarne Stroustrup: "Classi: una struttura di tipo astratto di dati per il linguaggio C" - Rapporto tecnico CSR-84 dei laboratori di Bell Laboratories. Aprile 1980.

  2. Bjarne Stroustrup: "A History of C ++: 1979-1991" - AT & T Bell Laboratories Murray Hill, New Jersey 07974.

risposta data 09.04.2016 - 17:24
fonte

Leggi altre domande sui tag