The
seemingly elaborate mechanisms provided by C++ should give you a strong hint
about the critical importance placed on initialization and cleanup in the
language. As Stroustrup was designing C++, one of the first observations he
made about productivity in C was that a very significant portion of programming
problems are caused by improper initialization of variables. These kinds of
bugs are very hard to find, and similar issues apply to improper cleanup.
Because constructors and destructors allow you to
guarantee
proper initialization and cleanup (the compiler will not allow an object to be
created and destroyed without the proper constructor and destructor calls), you
get complete control and safety.
Aggregate
initialization is included in a similar vein – it prevents you from
making typical initialization mistakes with aggregates of built-in types and
makes your code more succinct.
Safety
during coding is a big issue in C++. Initialization and cleanup are an
important part of this, but you’ll also see other safety issues as the
book progresses.