If your class does not have a constructor function, the compiler creates a default constructor for you. The constructor it created must have set width and height to 0.
Yes. When the standard does not require to write particular value to memory area, the compiler is free to do nothing. For example, the MSVC adds instructions to write 0, if you compile a "Debug build", but does not in "Release build".
When the program does not write a value, the value that you will see depends on what was written to that same memory address before your current object did occupy it.
Every (C++11) compiler can/will* provide default implementation for these:
Default constructor
Copy constructor
Copy assignment
Move constructor
Move assignment
Destructor