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