構(gòu)造函數(shù)的初始化

構(gòu)造函數(shù)的初始化和其他函數(shù)一樣,有自己的形參、名字和邏輯,但不同的是構(gòu)造函數(shù)可以有初始化列表。

// 案例:
class num
{
  private:
    int a;
    int b;
    int c;
  public:
    /*1. 構(gòu)造函數(shù)的初始化列表以冒號(hào)開(kāi)始的;
       2. 用逗號(hào)將每一個(gè)數(shù)據(jù)成員隔離開(kāi);
       3. 每一個(gè)數(shù)據(jù)成員后面都有一個(gè)小括號(hào),里面是數(shù)據(jù)成員的初始化值。
       注意:構(gòu)造函數(shù)初始化式只在構(gòu)造函數(shù)的定義中而不是聲明*/
    num::num:a(1), b(2), c(0){}
};

省略構(gòu)造函數(shù)初始化列表,并在構(gòu)造函數(shù)體內(nèi)初始化也是合法的,例如:

num::num(){a = 1; b = 2; c = 0;}

在什么情況下使用初始化列表
數(shù)據(jù)成員中有引用,const或者沒(méi)有默認(rèn)構(gòu)造函數(shù)的類(lèi)類(lèi)型的任何成員使用

// 案例:
class num 
{
  private:
      int a;
      const int b;
      int &c;
  public:
      num::num:a(1), b(2), c(0){}
};

成員初始化的次序

類(lèi)中的每一個(gè)數(shù)據(jù)成員在構(gòu)造初始化列表中只能被初始化一次。
構(gòu)造函數(shù)初始化列表僅指定初始化成員的值,而不指定執(zhí)行初始化的次序。初始化的次序和定義數(shù)據(jù)成員的次序是一樣的。

// 案例:
class num
{
  private:
      int a;
      int b;
      int c;
  public:
      // error: a is initialzied before b
      /*initialzied list: In fact, it used the not initialzied b to initialzied a.
         so when we want to initialzie member datas, we should accord to the define sequence;
         or all can't use member data to initialize the member data*/
      num::num(int value): b(value), a(b), c(b){}
      // right
      num::num(int value):a(value), b(value), c(value){}
};

初始化式可以是任意表達(dá)式

class num
{
  private:
      int a;
      int b;
      int sum;
  public:
      num::num(int l, int j, int k):a(l), b(j), sum(k + j){}
};

類(lèi)類(lèi)型的數(shù)據(jù)成員的初始化式

class student
{
  private:
      string name;
      int id;
  public:
      // name:用5個(gè)字符串na表示;
      // string的構(gòu)造函數(shù):接受一個(gè)計(jì)數(shù)值和一個(gè)字符串,生成一個(gè)新的string,來(lái)保存重復(fù)指定次數(shù)的字符
      student::student:name(5, 'na'), id(0){}
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容