最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c++ 構(gòu)造函數(shù)的初始化列表

 更新時(shí)間:2013年07月16日 11:08:13   作者:  
構(gòu)造函數(shù)的初始化列表僅僅指定用于初始化成員的值,并不指定這些初始化執(zhí)行的次序。成員初始化的次序就是定義成員的次序,第一個(gè)成員首先被初始化,然后是第二個(gè),依次類推

首先,運(yùn)行下圖中的C++代碼,輸出是什么?

復(fù)制代碼 代碼如下:

class A
{
private:
 int n1;
 int n2;
public:
 A(): n2(0) , n1(n2 + 2)
 {
 }
 void Print()
 {
  cout<<"n1:"<<n1<<",n2:"<<n2<<endl;
 }
};
int main(void)
{
 A a;
 a.Print();
 return 0;
}

答案:
輸出n1是一個(gè)隨機(jī)的數(shù)字,n2為0。在C++中,成員變量的初始化順序與變量在類型中的聲明順序相同,而與它們?cè)跇?gòu)造函數(shù)的初始化列表中的順序無(wú)關(guān)。因此在這道題中,會(huì)首先初始化n1,而初始n1的參數(shù)n2還沒(méi)有初始化,是一個(gè)隨機(jī)值,因此n1就是一個(gè)隨機(jī)值。初始化n2時(shí),根據(jù)參數(shù)0對(duì)其初始化,故n2=0。

構(gòu)造函數(shù)的初始化列表僅僅指定用于初始化成員的值,并不指定這些初始化執(zhí)行的次序。成員初始化的次序就是定義成員的次序,第一個(gè)成員首先被初始化,然后是第二個(gè),依次類推。也就是說(shuō),C++編譯器很容易得到構(gòu)造函數(shù)的參數(shù)列表,獲取參數(shù),然后根據(jù)成員變量的聲明順序初始化成員變量(這是因?yàn)?,后聲明的變量有可能依賴先聲明的成員變量,因此要有先聲明先初始化,后聲明的后初始化)。

大家可能看到這里就會(huì)覺(jué)得,好麻煩啊,當(dāng)類中的一個(gè)數(shù)據(jù)成員是根據(jù)其他數(shù)據(jù)成員而初始化的時(shí)候,初始化列表的次序不能跟成員變量的聲明次序不一致,否則會(huì)出現(xiàn)不可預(yù)料的錯(cuò)誤。

的確是這樣的,所以有人就會(huì)想到,我干脆把初始化列表的那些操作都放到構(gòu)造函數(shù)的函數(shù)體內(nèi)對(duì)數(shù)據(jù)成員進(jìn)行賦值操作就行了,的確這樣做是可以的,但是有時(shí)構(gòu)造函數(shù)的初始化列表是必須的。

有些數(shù)據(jù)成員必須在構(gòu)造函數(shù)初始化列表中進(jìn)行初始化。對(duì)于這樣的成員,在構(gòu)造函數(shù)體內(nèi)對(duì)它們賦值是不起作用的。沒(méi)有默認(rèn)構(gòu)造函數(shù)的類類型的成員,以及const類型的成員變量和引用類型的成員變量,不管是哪種類型,都必須在構(gòu)造函數(shù)初始化列表中進(jìn)行初始化。
例如,下面的構(gòu)造函數(shù)定義就是錯(cuò)誤的:

復(fù)制代碼 代碼如下:

class A
{
private:
 int i;
 const int j;
 int &k;
public:
 A(int ii)
 {
  i = ii;
  j = ii;
  k = ii;
 }
};

記住,可以初始化 const 對(duì)象或引用類型的對(duì)象,但不能對(duì)它們賦值。在開(kāi)始執(zhí)行構(gòu)造函數(shù)的函數(shù)體之前,要完成初始化,初始化 const 或引用類型的數(shù)據(jù)成員的唯一機(jī)會(huì)就是在構(gòu)造函數(shù)的初始化列表中。
例如,下面的構(gòu)造函數(shù)定義就是正確的:
復(fù)制代碼 代碼如下:

class A
{
private:
 int i;
 const int j;
 int &k;
public:
 A(int ii) : i(ii) , j(i) , k(ii)
 {
 }

 A() : j(0) , k(i)
 { }
};

int main(void)
{
 A a;
 return 0;
}

相關(guān)文章

  • C語(yǔ)言輸入一個(gè)數(shù)判斷是否為素?cái)?shù)的多種方法

    C語(yǔ)言輸入一個(gè)數(shù)判斷是否為素?cái)?shù)的多種方法

    素?cái)?shù)是只能被1和它自己本身整除,不能被其他自然數(shù)整除的大于1的正整數(shù),下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言輸入一個(gè)數(shù)判斷是否為素?cái)?shù)的多種方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • 解析C++編程中如何使用設(shè)計(jì)模式中的狀態(tài)模式結(jié)構(gòu)

    解析C++編程中如何使用設(shè)計(jì)模式中的狀態(tài)模式結(jié)構(gòu)

    這篇文章主要介紹了如何在C++編程中適用設(shè)計(jì)模式中的狀態(tài)模式結(jié)構(gòu),狀態(tài)模式強(qiáng)調(diào)將特定狀態(tài)相關(guān)的邏輯分散到一些類的狀態(tài)類中,需要的朋友可以參考下
    2016-03-03
  • C++開(kāi)源庫(kù)nlohmann/json的介紹和使用詳解

    C++開(kāi)源庫(kù)nlohmann/json的介紹和使用詳解

    nlohmann/json?是一個(gè)C++實(shí)現(xiàn)的JSON解析器,使用非常方便直觀,這篇文章主要為大家詳細(xì)介紹了nlohmann/json的簡(jiǎn)介和使用,需要的可以參考下
    2023-12-12
  • 好用的C++ string Format“函數(shù)”介紹

    好用的C++ string Format“函數(shù)”介紹

    大家好,本篇文章主要講的是好用的C++ string Format“函數(shù)”介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • C語(yǔ)言字符串與字符數(shù)組面試題中最易錯(cuò)考點(diǎn)詳解

    C語(yǔ)言字符串與字符數(shù)組面試題中最易錯(cuò)考點(diǎn)詳解

    這篇文章主要介紹了C語(yǔ)言字符串與字符數(shù)組面試題中最易錯(cuò)考點(diǎn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2022-09-09
  • C語(yǔ)言獲取Shell返回結(jié)果的實(shí)現(xiàn)方法

    C語(yǔ)言獲取Shell返回結(jié)果的實(shí)現(xiàn)方法

    下面小編就為大家?guī)?lái)一篇C語(yǔ)言獲取Shell返回結(jié)果的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-07-07
  • C語(yǔ)言編程計(jì)算信噪比SNR理解學(xué)習(xí)

    C語(yǔ)言編程計(jì)算信噪比SNR理解學(xué)習(xí)

    這篇文章主要介紹了C語(yǔ)言編程信噪比SNR計(jì)算的理解學(xué)習(xí),信噪比,英文名稱叫做SNR或S/N(SIGNAL-NOISE RATIO)。是指一個(gè)電子設(shè)備或者電子系統(tǒng)中信號(hào)與噪聲的比例
    2021-10-10
  • C語(yǔ)言實(shí)現(xiàn)電子秒表

    C語(yǔ)言實(shí)現(xiàn)電子秒表

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)電子秒表,毫秒級(jí)秒表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • stringstream操縱string的方法總結(jié)

    stringstream操縱string的方法總結(jié)

    下面小編就為大家?guī)?lái)一篇stringstream操縱string的方法總結(jié)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-12-12
  • C++與namespace有關(guān)的兩個(gè)編譯錯(cuò)誤的講解

    C++與namespace有關(guān)的兩個(gè)編譯錯(cuò)誤的講解

    今天小編就為大家分享一篇關(guān)于C++與namespace有關(guān)的兩個(gè)編譯錯(cuò)誤的講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-04-04

最新評(píng)論

福贡县| 阳春市| 鄂州市| 文昌市| 军事| 图片| 岚皋县| 根河市| 锡林浩特市| 广汉市| 渝北区| 曲靖市| 曲阜市| 北川| 砚山县| 宁陕县| 通渭县| 喜德县| 石屏县| 淮北市| 海城市| 弥勒县| 讷河市| 德令哈市| 旅游| 竹山县| 云林县| 隆回县| 佛教| 东明县| 鄯善县| 肥西县| 施甸县| 漳州市| 栾城县| 远安县| 定结县| 睢宁县| 门源| 平遥县| 霍林郭勒市|