Pourquoi est-ce que C++ besoin de l'opérateur de résolution de portée?

(Je sais ce que l'opérateur de résolution de portée, et quand et comment l'utiliser).

Pourquoi est-ce que C++ ont la :: opérateur, au lieu d'utiliser le . exploitant à cette fin? Java n'est pas séparé de l'opérateur, et fonctionne très bien. Est-il une différence entre C++ et Java qui signifie C++ nécessite un opérateur, afin d'être analysée?

Ma conjecture est que :: est nécessaire pour des raisons de préséance, mais je ne vois pas pourquoi il doit avoir une priorité plus élevée que, par exemple, .. La situation que je peux penser est donc que quelque chose comme

a.b::c;

serait analysée comme

a.(b::c);

mais je ne peux pas penser à une situation dans laquelle la syntaxe comme ce serait possible de le faire de toute façon.

Peut-être que c'est juste une affaire de "ils font des choses différentes, de sorte qu'ils pourraient ainsi un aspect différent". Mais cela n'explique pas pourquoi :: a une priorité plus élevée que ..

Pour résoudre portée.

OriginalL'auteur Karu | 2012-02-18