To initialize means assigning an initial state to the object before it is used. This initialization can be part of the instantiation process, in that case values are explicitly assigned to object attributes in the constructor of the object.
} An important thing to remember: at the moment you initialize even one object/variable in the struct, all of its other variables will be initialized to default value. If you don't initialize the values in your struct (i.e. if you just declare that variable), all variable.members will contain "garbage values", only if the declaration is local!
After reading the question, I know the differences between declaration and definition. So does it mean definition equals declaration plus initialization?
Even if all constructors for a class share a large amount of code, the use of a private initialize () function seems to make more sense to me than using an initializer because it doesn't lock you into having that code run when writing a new constructor.
The only difference is that the var statement will initialize any declared variables without a value to undefined. In both examples, you are declaring a variable.
By definition, default initialization is the initialization that occurs when no other initialization is specified; the C++ language guarantees you that any object for which you do not provide an explicit initializer will be default initialized (C++11 §8.5/11). That includes objects of type std::array<T, N> and T[N]. Be aware that there are types for which default initialization has no effect ...
A constructor should initialize an object in a way that it's in a usable state. A constructor should only initialize an object, not perform heavy work. A constructor should not directly or indirectly call virtual members or external code. So in most cases an Initialize method shouldn't be required.