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