Він , по слухам , що в початку C ++ реалізація мала точковий оператор для доступу простору імен. Існує думка, що крапка зручніша, ніж сучасний оператор подвійної двокрапки.
Що було міркуванням про введення подвійної кишки?
Він , по слухам , що в початку C ++ реалізація мала точковий оператор для доступу простору імен. Існує думка, що крапка зручніша, ніж сучасний оператор подвійної двокрапки.
Що було міркуванням про введення подвійної кишки?
Відповіді:
Як зауважив Жуль, це факт, що на ранніх C ++ впровадженнях (CFront до 1,0) була крапка для ідентифікації області.
Крапка також була використана в C with Classes (1980). Дійсно, це простий фрагмент з класів: Абстрактний інструмент типу даних для мови С 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 з класами крапка використовувалася для вираження належності до класу, а також для вираження вибору члена певного об’єкта.
Це було причиною незначної плутанини і також могло бути використане для побудови неоднозначних прикладів. Щоб полегшити це,
::
було введено означає членство в класі і.
зберігалося виключно для належності до об'єкта
( Історія С ++: 1979-1991 [2] стор. 21 - § 3.3.1)
Bjarne Stroustrup: "Класи: абстрактний інструмент типу даних для мови C" - Bell Laboratories Технічний звіт з комп'ютерних наук CSTR − 84. Квітень 1980 року.
Bjarne Stroustrup: "Історія C ++: 1979-1991" - AT&T Bell Laboratories Murray Hill, Нью-Джерсі, 07974.
::symbol
змусити його шукатиsymbol
у глобальному просторі імен замість поточного простору імен, так що це хоча б одне, що виглядатиме дуже заплутано і, можливо, введе в мову ще синтаксичну неоднозначність, якщо Натомість використовувався оператор крапки.