In C++, a class declaration introduces the class name into the
scope where it is declared and hides any object, function, or
other declaration of that name in an enclosing scope. In ISO/ANSI
C, an inner scope declaration of a struct name does not hide an
object or function of that name in an outer scope. For example:
double db; void main () { struct db // hides double object db in C++ { char* str; }; int x = sizeof(db); // size of struct in C++ // size of double in ISO/ANSI C }