No. It is not inconsistency.
What if your class is defined as:
struct MyClass
{
int x;
float y;
char *z;
};
then this line does NOT do that you think it does:
MyClass myInstance;
Assuming the above is declared inside a function, it is same as:
int x; //assuming declared inside a function
In C++, the types are broadly divided into 3 kinds viz. POD, non-POD, Aggregates — and there is a clear distinction between them. Please read about them and their initialization rules (there are too many topics on them. Search on this site). Also read about static initialization and dynamic initialization.