Зачем C ++ нужен оператор разрешения области видимости?

(я знаю, что делает оператор разрешения области видимости, и как и когда его использовать).

Почему в C ++ есть оператор :: , вместо использования . оператор для этого? Java не имеет отдельного оператора и отлично работает. Есть ли какая-то разница между C ++ и Java, что означает, что C ++ требует отдельного оператора для синтаксического анализа?

Я предполагаю, что :: требуется по причинам приоритета, но я не могу понять, почему он должен иметь более высокий приоритет, чем, скажем, . . Единственная ситуация, в которой я могу думать, это когда что-то вроде

a.b::c;

будет проанализировано как

a.(b::c);

, но я не могу придумать ни одной ситуации, в которой подобный синтаксис был бы законным в любом случае.

Может быть, дело в том, что «они делают разные вещи, так что с таким же успехом они могут выглядеть по-разному». Но это не объясняет, почему :: имеет более высокий приоритет, чем . .

38
задан manlio 9 April 2016 в 20:00
поделиться