¿Por qué los dos puntos dobles en lugar del punto?

15

se rumorea que las primeras implementaciones de C ++ han tenido un operador de puntos para el acceso al espacio de nombres. Existe la opinión de que el punto es más conveniente que el operador moderno de doble colon.

¿Cuál fue el razonamiento detrás de la introducción de los dos puntos dobles?

    
pregunta Rich 02.04.2016 - 08:18

1 respuesta

12

Como observado por Jules es un hecho. que las primeras implementaciones de C ++ (CFront pre-1.0) tenían un punto para la identificación del alcance.

También se usó un punto en C with Classes (1980). De hecho, este es un fragmento simple de Clases: una facilidad de tipo de datos abstractos para el lenguaje 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);
}

(el código era un ejemplo de cómo las funciones de los miembros se definían normalmente como "en otra parte")

El :: fue una de las adiciones a C con clases introducidas para producir C ++.

El propio Stroustrup da la razón:

  

En C con clases, se usó un punto para expresar la pertenencia a una clase y para expresar la selección de un miembro de un objeto en particular.

     

Esto había sido la causa de una pequeña confusión y también podía usarse para construir ejemplos ambiguos. Para aliviar esto, se introdujo :: para significar pertenencia a clase y . se retuvo exclusivamente para pertenencia a objeto

( A History of C ++: 1979−1991 [2] página 21 - § 3.3.1)

  1. Bjarne Stroustrup: "Clases: una facilidad de tipo de datos abstractos para el lenguaje C" - Bell Laboratories Computer Science Informes CSTR − 84. Abril de 1980.

  2. Bjarne Stroustrup: "Una historia de C ++: 1979–1991" - AT & T Bell Laboratories Murray Hill, Nueva Jersey 07974.

respondido por el manlio 09.04.2016 - 17:24

Lea otras preguntas en las etiquetas