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)
-
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.
-
Bjarne Stroustrup: "A History of C ++: 1979-1991" - AT & T Bell Laboratories
Murray Hill, New Jersey 07974.