Он , по слухам , что в начале C ++ реализация имела точечный оператор для доступа пространства имен. Существует мнение, что точка более удобна, чем современный оператор с двойным двоеточием.
Что послужило причиной введения двойного двоеточия?
Он , по слухам , что в начале C ++ реализация имела точечный оператор для доступа пространства имен. Существует мнение, что точка более удобна, чем современный оператор с двойным двоеточием.
Что послужило причиной введения двойного двоеточия?
Ответы:
Как заметил Жюль , это факт, что ранние реализации C ++ (CFront до 1.0) имели точку для определения области видимости.
Точка была также использована в C с классами (1980). На самом деле это простой фрагмент из Classes: абстрактный тип данных для языка 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 ++.
Причина дана самим Страуструпом:
В C с классами точка использовалась для выражения принадлежности к классу, а также для выражения выбора члена определенного объекта.
Это послужило причиной некоторого небольшого замешательства и могло также использоваться для построения неоднозначных примеров. Чтобы облегчить это,
::
был введен, чтобы означать членство класса и.
был сохранен исключительно для членства объекта
( История C ++: 1979–1991 гг. [2], стр. 21 - § 3.3.1)
Бьярн Страуструп: «Классы: средство абстрактного типа данных для языка Си» - Технический отчет по информатике Bell Laboratories CSTR − 84. Апрель 1980 г.
Бьярн Страуструп: «История C ++: 1979–1991» - AT & T Bell Laboratories Murray Hill, Нью-Джерси 07974.
::symbol
заставить его искатьsymbol
в глобальном пространстве имен вместо текущего пространства имен, так что это по крайней мере одна вещь, которая выглядела бы очень запутанно и, вероятно, привнесла бы еще большую синтаксическую неоднозначность в язык, если Вместо этого был использован точечный оператор.