What are qualified-id/name and unqualified-id/name?

C++

C++ Problem Overview


I was wondering if someone could explain there terms since I encounter them in many places. I know some basic theory about them but not sure what I know is right or wrong.

So can any one please explain these terms?

C++ Solutions


Solution 1 - C++

A qualified name is one that has some sort of indication of where it belongs, e.g. a class specification, namespace specification, etc. An unqualified name is one that isn't qualified.

Read James McNellis' answer here:

What is a nested name specifier?

Given:

struct  A {
    struct B {
        void F();
    };
};
  • A is an unqualified-id.
  • ::A is a qualified-id but has no nested-name-specifier.
  • A::B is a qualified-id and A:: is a nested-name-specifier.
  • ::A::B is a qualified-id and A:: is a nested-name-specifier.
  • A::B::F is a qualified-id and both B:: and A::B:: are nested-name-specifiers.
  • ::A::B::F is a qualified-id and both B:: and A::B:: are nested-name-specifiers.

Solution 2 - C++

A qualified name is one that specifies a scope.
Consider the following sample program, the references to cout and endl are qualified names:

#include <iostream>

int main()  
{
   std::cout<<"Hello world!"<<std::endl;
   return 0;
}

Notice that the use of cout and endl began with std::. These make them Qualified names.

If we brought cout and endl into scope by a using declaration or directive*(such as using namespace std;), and used just cout and endl just by themselves , they would have been unqualified names, because they would lack the std::.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionM3taSpl0itView Question on Stackoverflow
Solution 1 - C++SadiqueView Answer on Stackoverflow
Solution 2 - C++Alok SaveView Answer on Stackoverflow