对象的成员的初始化

变量类型:

  1. 内置基本类型:  int, char, bool,

  2. 复合类型 (compound type): 指针、引用、数组

  3. 类类型: struct, class   (string,vector等)

======================================================================== 

定义变量时:

  一:进行“初始化”:可分为

    ①指定值 初始化

        int i = 3;  

        Dog dog("snoopy");

    ②使用默认值 初始化(不指定值):

        (在全局范围)int i;     ——> 在全局范围定义的 内置类型默认时被初始化为0值

          Dog dog;     ——>  成员变量:【默认构造函数的方案】

                  (一)类类型成员变量使用该类型的默认构造 

                  (二)内置类型、指针不会默认初始化——> Dog的默认构造函数中应对内置基本类型/指针进行显式初始化为0值

                  (三)引用类型成员必须在构造时绑定已存在的对象。——> 不要把引用类型作为成员变量。

  二:不进行初始化:  ——> 此时只分配内存空间,值是未定义的(该地址上原有的0/1信息),若使用会导致未定义的行为

        (在函数体内)int i;   

        (在函数体内) int* pt; (并不等于nullptr !)

         (作为成员变量,在构造函数中未指定值时)


猜你喜欢

转载自www.cnblogs.com/nanlan2017/p/9230301.html