默認初始化&拷貝初始化&直接初始化&值初始化&列表初始化

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};
  • 列表初始化之因此可行,是由於咱們在相應的類的構造函數中定義了該種方法。
相關文章
相關標籤/搜索