Code:Is the way they initialise variable facing any problem? Is the way they initialise are the same? class Initial { public: Initial(); ~Initial(); private: int val; }; Initial::Initial() { val = 0; } //AND class Initial { public: Initial( int = 0 ); ~Initial(); void setVal(); private: int val; }; Initial::Initial( int v ) { setVal( v ); } void setVal( int v ) { val = v; } //AND class Initial { public: Initial( int = 0 ); ~Initial(); private: int val; }; Initial::Initial( int v ) : val( v ) {} //AND class Initial { public: Initial( int ); ~Initial(); private: int val; }; Initial::Initial( int v ) { val = v; } int main() { Initial i( 5 ); .... .... return 0; } Over here, the variable 'val' is straight away initialised by a desirable value from programmer. Shouldn't 'val' be initialised to zero first before using it?