(я знаю, что делает оператор разрешения области видимости, и как и когда его использовать).
Почему в C ++ есть оператор ::
, вместо использования .
оператор для этого? Java не имеет отдельного оператора и отлично работает. Есть ли какая-то разница между C ++ и Java, что означает, что C ++ требует отдельного оператора для синтаксического анализа?
Я предполагаю, что ::
требуется по причинам приоритета, но я не могу понять, почему он должен иметь более высокий приоритет, чем, скажем, .
. Единственная ситуация, в которой я могу думать, это когда что-то вроде
a.b::c;
будет проанализировано как
a.(b::c);
, но я не могу придумать ни одной ситуации, в которой подобный синтаксис был бы законным в любом случае.
Может быть, дело в том, что «они делают разные вещи, так что с таким же успехом они могут выглядеть по-разному». Но это не объясняет, почему ::
имеет более высокий приоритет, чем .
.