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
}