왜 도트 대신에 이중 콜론?


19

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

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


3
내 머리 꼭대기에서 C ++을 사용하면 현재 네임 스페이스 대신 글로벌 네임 스페이스에서 ::symbol강제로 찾 symbol도록 할 수 있습니다. 대신 도트 연산자가 사용되었습니다.
Ixrec

14
C :::::::::::::::::::::::::::::::::::::::::::::: C :::::::::::::::::::::::::::::::::::::::::::::::::::::::: 콜론 :: 암으로.
메이슨 휠러

1
시맨틱 분석기에서 혼동을 일으킨 것 같습니다. Dot은 접두어 분석법 이름에도 사용되는데, 이는 비슷한 개념이며 분리하기 어려울 수 있습니다. 이를 해결하는 명확한 방법입니다.
Rápli András


5
C에 대한 메이슨 휠러의 무의미한 공격의 끔찍한 추악한 확산은 이름이 없습니다.
Jerry Coffin

답변:


14

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.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.