What is a fully qualified name?

坚强是说给别人听的谎言 提交于 2019-12-08 14:26:14

问题


As far as I can tell, the term fully qualified isn't mentioned in the standard (e.g.), but I can recall "hearing" it many times online.

What do people mean when they say a name is fully qualified?

Does this count?

A::f()

or only this?

::A::f()

And, if it is standard, which wording have I not found?


回答1:


An identifier that uses the scope resolution operator is a qualified name as per [expr.prim.id.qual]. Otherwise it is unqualified.

The standard doesn't define the meaning of fully qualified, but it does mention it in [library]/[requirements]/[organization]/[contents] which says (quote from standard draft)

Whenever a name x defined in the standard library is mentioned, the name x is assumed to be fully qualified as ::std::x, unless explicitly described otherwise. For example, if the Effects: element for library function F is described as calling library function G, the function ::std::G is meant.

Wikipedia defines Fully qualified name:

In computer programming, a fully qualified name is an unambiguous name that specifies which object, function, or variable a call refers to without regard to the context of the call

Only a name qualified starting from the global namespace is unambiguous without context. This is the common usage.




回答2:


Indeed, it is not a standard term. It has no definition in the standard.

However, the phrase "fully qualified" appears exactly once, in [contents] (15.5.1.1 "Library contents" in the as-of-writing most current draft N4800) paragraph 3:

Whenever a name x defined in the standard library is mentioned, the name x is assumed to be fully qualified as ::std::x, unless explicitly described otherwise.

So in this definition, only names starting with :: are fully qualified.



来源:https://stackoverflow.com/questions/56273345/what-is-a-fully-qualified-name

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!