This is one of the few things I really don't like about C++.

Code:
#include <iostream>

struct WrappedInt { int x; };

int main()
{
    int i;
    int iArray[5];
    WrappedInt wi;
    
    std::cout << i; // 0
    std::cout << *(new int); // 0
    std::cout << int(); // 0
    std::cout << iArray[0]; // undefined
    std::cout << wi.x; // undefined
    
    return 0;
}
Does anyone know why?