Jest podobno , że wczesne C ++ implementacje miały dot operatora o udostępnienie przestrzeni nazw. Istnieje opinia, że kropka jest wygodniejsza niż nowoczesny operator dwukropka.
Jakie było uzasadnienie wprowadzenia podwójnego dwukropka?
Jest podobno , że wczesne C ++ implementacje miały dot operatora o udostępnienie przestrzeni nazw. Istnieje opinia, że kropka jest wygodniejsza niż nowoczesny operator dwukropka.
Jakie było uzasadnienie wprowadzenia podwójnego dwukropka?
Odpowiedzi:
Jak zauważył Jules , faktem jest, że wczesne implementacje C ++ (CFront przed 1.0) miały kropkę do identyfikacji zakresu.
Kropka była również używana w C z klasami (1980). Rzeczywiście jest to prosty fragment z klas: Narzędzie abstrakcyjnego typu danych dla języka 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);
}
(kod był przykładem tego, jak funkcje składowe były zazwyczaj definiowane „gdzie indziej”)
::
Był jednym z dodatków do C z klas wprowadzoną do C ++.
Przyczynę podaje sam Stroustrup:
W C z klasami kropka została użyta do wyrażenia przynależności do klasy, a także do wyrażenia wyboru członka określonego obiektu.
Było to przyczyną drobnych nieporozumień i można je również wykorzystać do konstruowania niejednoznacznych przykładów. Aby to złagodzić,
::
wprowadzono oznaczanie przynależności do klasy i.
zachowano wyłącznie dla przynależności do przedmiotu
( A History of C ++: 1979−1991 [2] page 21 - § 3.3.1)
Bjarne Stroustrup: „Klasy: narzędzie abstrakcyjnego typu danych dla języka C” - raport techniczny Bell Laboratories Computer Science CSTR-84. Kwiecień 1980 r.
Bjarne Stroustrup: „A History of C ++: 1979−1991” - AT&T Bell Laboratories Murray Hill, New Jersey 07974.
::symbol
zmusić go do szukaniasymbol
w globalnej przestrzeni nazw zamiast w bieżącej przestrzeni nazw, więc jest to co najmniej jedna rzecz, która wyglądałaby bardzo myląco i prawdopodobnie wprowadziłaby jeszcze więcej dwuznaczności składniowej do języka, jeśli zamiast tego zastosowano operator kropki.