I do not know if I understood your question correctly or not.
that is, without c'tor specified by the user, 'i' and 'c' will be initialized to 0.
Not necessary.
For instance:
T x; // `i` and `c` are uninitialized T *ptr = new T; // `i` and `c` are uninitialized T *pptr = new T(); //`i` and `c` are zero initialized as `T()` implies value initialization T x(); // x is a function returning a type T and taking no arguments.
To be precise, value initialization (C ++ 03 Section $ 8.5 / 5) is what you are looking for. It was introduced in C ++ 03.
source share