Por que dois pontos duplos em vez de ponto?

15

rumores de que as primeiras implementações de C ++ tiveram o operador de ponto para acesso ao namespace. Há uma opinião de que o ponto é mais conveniente que o moderno operador de dois pontos.

Qual foi o raciocínio por trás da introdução do cólon duplo?

    
por Rich 02.04.2016 / 08:18
fonte

1 resposta

12

Como observado por Jules é um fato que as primeiras implementações de C ++ (CFront pré-1.0) tinham um ponto para identificação de escopo.

Um ponto também foi usado em C com Classes (1980). Na verdade, esse é um snippet simples de Classes: um recurso de tipo de dados abstratos para a linguagem 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);
}

(o código era um exemplo de como as funções dos membros eram normalmente definidas "em outro lugar")

O :: foi uma das adições a C com Classes introduzidas para produzir C ++.

A razão é dada pelo próprio 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

( Uma História do C ++: 1979-1991 [2] página 21 - § 3.3.1)

  1. Bjarne Stroustrup: "Classes: Uma instalação de tipo de dados abstratos para a linguagem C" - Bell Laboratories Relatório técnico de ciência da computação CSTR − 84. Abril de 1980.

  2. Bjarne Stroustrup: "Uma história do C ++: 1979-1991" - AT & T Bell Laboratories Murray Hill, Nova Jersey 07974.

por 09.04.2016 / 17:24
fonte