默认初始化&拷贝初始化&直接初始化&值初始化&列表初始化

1、各类初始化的形式函数

/* 定义变量形式一:不指定初始值 */
int a;	    // 默认初始化

/* 定义变量形式二:指定初始值 */
int b = 1;		// 拷贝初始化
int b(1);		// 直接初始化
int b = {1};	// 列表初始化
int b{1};		// 列表初始化

 

2、默认初始化spa

  • 定义变量时没有指定初值(此时变量被赋予了“默认值”)

内置类型:①全局变量被初始化为0,②局部变量不被初始化(值是未定义的)code

类类型:①有默认构造函数则由默认构造函数初始化,②无默认构造函数同内置类型对象

 

3、拷贝初始化blog

  • 使用等号=初始化一个变量(编译器把等号右侧的初始值拷贝到新建立的对象中去)

 

4、直接初始化编译器

    string s1("hello");            // 直接初始化
    string s2(10, 'c');            // 直接初始化
  • 直接初始化与咱们类的构造函数息息相关。

 

5、列表初始化string

int a = {10};
        int a{10};
        vector<int> ivec = {1, 3, 5, 7};
        vector<int> ivec{1, 3, 5, 7};
  • 列表初始化之因此可行,是由于咱们在相应的类的构造函数中定义了该种方法。
相关文章
相关标签/搜索