当定义没有初始化的变量时,系统有时会帮我们初始化变量.这时,系统提供什么样的值取决于变量的类型,也取决于变量定义的位置.
内置类型变量是否自动初始化取决于变量定义的位置。在函数体外定义的变量都初始化成0,在函数体里定义的内置类型变量不进行自动初始化。除了用作赋值操作符的左操作数,未初始化变量用作任何其他用途都是没有定义的。未初始化变量引起的错误难于发现。所以,永远不要依赖未定义行为.
未初始化的变量事实上都有一个值。编译器把该变量放到内存中的某个位置,而把这个位置的无论哪种位模式都当成是变量初始的状态。当被解释成整型值时,任何位模式都是合法的值——虽然这个值不可能是程序员想要的。因为这个值合法,所以使用它也不可能会导致程序崩溃。可能的结果是导致程序错误执行和/或错误计算.
每个类类型都定义了该类型的对象可以怎样初始化.类通过定义一个或多个构造函数来控制类对象的初始化.如果没有提供初始化式,它可以通过定义一个特殊的构造函数即默认构造函数来实现.