下面为大家简单地讲解一下C++中变量初始化的若干规则,限于本人学识有限,定有不详或不正确之描述,还望午饭们发扬找不到错误不罢休的精神,多多指点纠正,这样我也好及时修改自己的文章,为午饭们提供更好更有用的基础学习贴。
---------------------------------------------------------------------------------------------------
当定义 没有初始化式 的变量(如int i;)时,系统 有可能 会为我们进行隐式的初始化。至于系统是否帮我们隐式初始化变量,以及为变量赋予一个怎样的初始值,这要取决于该 变量的类型 以及我们在 何处定义的该变量 。
1】内置类型变量的初始化
内置变量是否自动初始化,取决于该变量定义的位置。
①在全局范围内的内置类型变量均被编译器自动初始化为0值 ②在函数体内定义的内置类型变量值随机(有的编译器可能会为你初始化为0,但 千万别依赖于这种可能行为 ,因为它会给你的程序带来未定义的行为) ③内置类型数组的初始化规则同上 2】类类型变量的初始化
类类型变量是通过构造函数进行初始化的, 不论类类型变量在哪里(全局或者局部)定义 ,该类类型变量的构造函数(默认构造函数或者指定的带参构造函数) 总会被调用 。
想要知道构造函数在各种情况下如何初始化类中数据成员的,我们必须首先了解构造函数的初始化发生在何时。 现在我们知道,构造函数的初始化是发生在初始化列表中的,那么,对于 初始化列表中没有显示进行初始化的内置类型变量 来说,其初始化规则就与上述内置类型变量的规则相同了。
下面我们就一起来探索这个问题:
---------------------------------------------------------------------------------------------------
当定义 没有初始化式 的变量(如int i;)时,系统 有可能 会为我们进行隐式的初始化。至于系统是否帮我们隐式初始化变量,以及为变量赋予一个怎样的初始值,这要取决于该 变量的类型 以及我们在 何处定义的该变量 。
1】内置类型变量的初始化
内置变量是否自动初始化,取决于该变量定义的位置。
①在全局范围内的内置类型变量均被编译器自动初始化为0值 ②在函数体内定义的内置类型变量值随机(有的编译器可能会为你初始化为0,但 千万别依赖于这种可能行为 ,因为它会给你的程序带来未定义的行为) ③内置类型数组的初始化规则同上 2】类类型变量的初始化
类类型变量是通过构造函数进行初始化的, 不论类类型变量在哪里(全局或者局部)定义 ,该类类型变量的构造函数(默认构造函数或者指定的带参构造函数) 总会被调用 。
想要知道构造函数在各种情况下如何初始化类中数据成员的,我们必须首先了解构造函数的初始化发生在何时。 现在我们知道,构造函数的初始化是发生在初始化列表中的,那么,对于 初始化列表中没有显示进行初始化的内置类型变量 来说,其初始化规则就与上述内置类型变量的规则相同了。
下面我们就一起来探索这个问题: