! f& w p. f. K+ z除了用作赋值操作符的左操作数,未初始化的变量用作任何其他用途都是没有定义的,未初始化引起的错误难以发现。) o! B# }; @1 P2 r- z
5 s# S# j* \6 O2 N
2、类类型变量的初始化 - i4 P# ?% e4 P( S S( y8 j. U' k# L9 h0 i: A/ Z( C
每个类都定义了该类型的对象可以怎样初始。类通过定义一个或多个构造函数来控制类对象的初始化。例如我们知道string类至少提供了两个构造函数,其中一个允许我们通过字符串字面值初始化string对象,另外一个允许通过字符和计数器初始化string对象。! X1 i. g. L- J4 k! n2 q! m
7 v! S, x. f' l0 j8 e如果某个类的变量时没有提供初始式,这个类也可以定义初始化时的操作数。它通过定义一个特殊的构造函数,即默认构造函数来实现。这个够战术之所以成为默认构造函数,是因为它是“默认运行”的。如果没有提供初始化式,那么就会使用默认构造函数。不管类变量在哪里定义,默认构造函数都会并使用。" Q* b- x4 @ x5 \- n3 b8 z( T
; J! \7 M2 N* H8 F: J大多数类都提供了默认构造函数。如果类具有默认构造函数,那么就可以在定义该类的变量时不用显示的初始化变量。例如,string类定义默认构造函数来初始化string变量为空字符串,即没有字符的字符串。 . W* @# n1 x+ g. t- x* G( T