web-dev-qa-db-fra.com

Pourquoi double-colon au lieu de point?

Il est selon la rumeur que les premières implémentations C++ ont eu un opérateur point pour l'accès à l'espace de noms. Il y a une opinion que le point est plus pratique que l'opérateur moderne à deux points.

Quel était le raisonnement derrière l'introduction du double colon?

19
Rich

Comme observé par Jules c'est un fait que les premières implémentations C++ (CFront pré-1.0) avaient un point pour l'identification de la portée.

Un point a également été utilisé en C avec les classes (1980). En effet, il s'agit d'un simple extrait de Classes: An Abstract Data Type Facility for the C Language 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);
}

(le code était un exemple de la façon dont les fonctions membres étaient généralement définies "ailleurs")

Le :: était l'un des ajouts à C avec des classes introduites pour produire C++.

La raison est donnée par Stroustrup lui-même:

En C avec Classes, un point était utilisé pour exprimer l'appartenance à une classe ainsi que pour exprimer la sélection d'un membre d'un objet particulier.

Cela avait été la cause d'une certaine confusion mineure et pouvait également être utilisé pour construire des exemples ambigus. Pour remédier à cela, :: a été introduit pour signifier l'appartenance à une classe et . a été conservé exclusivement pour l'appartenance à l'objet

( Une histoire de C++: 1979−1991 [2] page 21 - § 3.3.1)


  1. Bjarne Stroustrup: "Classes: An Abstract Data Type Facility for the C Language" - Rapport technique informatique CSTR − 84 des laboratoires Bell. Avril 1980.

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

14
manlio