In C there is such a notion as a tag of a structure, union or enumeration. Correspondingly an identifier can denote a tag. To distinguish such an identifier from an identifier of other variable identifiers that denote tags are used together with keywords struct, union, and enum.
For example consider the following demonstrative program.
#include <stdio.h>
int main(void) 
{
    struct x
    {
        int x;
    } x = { 10 };
    printf( "x.x = %d\n", x.x );
    return 0;
}
Its output is
x.x = 10
Here the same name x is used to denote a structure tag, a member of a structure and a variable of a structure type.
In C++ there is used the term class name the same way as a name of any other entity. In C++ there are name spaces that allows to place entities with the same name in different name space to avoid a collision.