왜 도트 대신에 이중 콜론? 연산자 가 있다는 소문 이 있습니다.

초기 C ++ 구현에는 네임 스페이스 액세스를위한 도트 연산자 가 있다는 소문 이 있습니다. 현대의 이중 콜론 연산자보다 점이 더 편리하다는 의견이 있습니다.

이중 콜론을 도입 한 이유는 무엇입니까?



답변

Jules가 관찰 한 바와 같이 초기 C ++ 구현 (CFront pre-1.0)에는 범위 식별에 대한 점이있었습니다.

클래스 (1980) 와 함께 C 에도 도트가 사용되었습니다 . 실제로 이것은 클래스 의 간단한 스 니펫입니다 .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);
}

(코드는 멤버 함수가 일반적으로 “다른 곳에”정의 된 방법의 예입니다)

클래스 는 C ++를 생성하기 위해 도입 된 C 클래스에:: 추가 된 것 중 하나였습니다 .

그 이유는 Stroustrup 자신이 제공합니다.

클래스가있는 C에서 점은 클래스의 멤버십을 표시하고 특정 오브젝트의 멤버 선택을 표시하는 데 사용되었습니다.

이것은 약간의 혼란의 원인이었으며 모호한 예를 만드는 데 사용될 수도 있습니다. 이를 완화하기 ::위해 클래스 멤버십을 의미하도록 도입되었으며 .객체 멤버십 전용으로 유지되었습니다.

( C ++의 역사 : 1979−1991 [2] 페이지 21-§ 3.3.1)


  1. Bjarne Stroustrup : “클래스 : C 언어에 대한 추상 데이터 유형 기능”-Bell Laboratories 컴퓨터 과학 기술 보고서 ​​CSTR−84. 1980 년 4 월.

  2. Bjarne Stroustrup : “C ++의 역사 : 1979-1991”-AT & T Bell Laboratories Murray Hill, 뉴저지 07974.