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

C++ 成員變量的初始化順序問(wèn)題詳解

 更新時(shí)間:2017年02月23日 08:35:07   投稿:lqh  
這篇文章主要介紹了C++ 成員變量的初始化順序問(wèn)題詳解的相關(guān)資料,需要的朋友可以參考下

C++ 成員變量的初始化順序問(wèn)題詳解

問(wèn)題來(lái)源:

由于面試題中,考官出了一道簡(jiǎn)單的程序輸出結(jié)果值的題:如下,


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

 這時(shí),那個(gè)考生這樣回答:n1是2,n2是0。

在我電腦輸出結(jié)果為:

如果你也這樣回答,那么你肯定不懂初始化成員列表的順序。

如果我把A類(lèi)中構(gòu)造函數(shù)改成:

A() 
{ 
 n2 = 0; 
 n1 = n2 +2; 
} 
 

那么此時(shí)輸出結(jié)果為:

 

分析:   

1、成員變量在使用初始化列表初始化時(shí),與構(gòu)造函數(shù)中初始化成員列表的順序無(wú)關(guān),只與定義成員變量的順序有關(guān)。因?yàn)槌蓡T變量的初始化次序是根據(jù)變量在內(nèi)存中次序有關(guān),而內(nèi)存中的排列順序早在編譯期就根據(jù)變量的定義次序決定了。這點(diǎn)在EffectiveC++中有詳細(xì)介紹。

2、如果不使用初始化列表初始化,在構(gòu)造函數(shù)內(nèi)初始化時(shí),此時(shí)與成員變量在構(gòu)造函數(shù)中的位置有關(guān)。

3、注意:類(lèi)成員在定義時(shí),是不能初始化的

4、注意:類(lèi)中const成員常量必須在構(gòu)造函數(shù)初始化列表中初始化。

5、注意:類(lèi)中static成員變量,必須在類(lèi)外初始化。

6、靜態(tài)變量進(jìn)行初始化順序是基類(lèi)的靜態(tài)變量先初始化,然后是它的派生類(lèi)。直到所有的靜態(tài)變量都被初始化。這里需要注意全局變量和靜態(tài)變量的初始化是不分次序的。這也不難理解,其實(shí)靜態(tài)變量和全局變量都被放在公共內(nèi)存區(qū)??梢园鸯o態(tài)變量理解為帶有“作用域”的全局變量。在一切初始化工作結(jié)束后,main函數(shù)會(huì)被調(diào)用,如果某個(gè)類(lèi)的構(gòu)造函數(shù)被執(zhí)行,那么首先基類(lèi)的成員變量會(huì)被初始化。  

bbb的成員變量定義:
private:
int n1;
int n2;
bbb的構(gòu)造函數(shù):
bbb::bbb()
:n2(1),
n1(2)
{
}

匯編代碼:

00401535 mov eax,dword ptr [ebp-4]
00401538 mov dword ptr [eax+4],2
0040153F mov ecx,dword ptr [ebp-4]
00401542 mov dword ptr [ecx+8],1

然后依照派生鏈初始化派生類(lèi)的成員函數(shù)。

總結(jié):

   變量的初始化順序就應(yīng)該是:

1 基類(lèi)的靜態(tài)變量或全局變量
2 派生類(lèi)的靜態(tài)變量或全局變量
3 基類(lèi)的成員變量
4 派生類(lèi)的成員變量

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • C++ COM編程之什么是組件?

    C++ COM編程之什么是組件?

    這篇文章主要介紹了COM編程之什么是組件?COM組件是以Win32動(dòng)態(tài)鏈接庫(kù)(DLLs)或可執(zhí)行文件(EXEs)的形式發(fā)布的可執(zhí)行代碼,需要的朋友可以參考下
    2014-10-10
  • C++中的強(qiáng)制類(lèi)型轉(zhuǎn)換操作詳解

    C++中的強(qiáng)制類(lèi)型轉(zhuǎn)換操作詳解

    C++中提供了四種強(qiáng)制類(lèi)型轉(zhuǎn)換技術(shù):static_cast、dynamic_cast、reinterpret_cast和const_cast。這些技術(shù)能夠在需要時(shí)將一種類(lèi)型轉(zhuǎn)換為另一種類(lèi)型,但需要注意它們的適用條件和安全性。程序員需要根據(jù)具體情況選擇合適的強(qiáng)制類(lèi)型轉(zhuǎn)換方式,以確保程序的正確性和可靠性
    2023-04-04
  • C語(yǔ)言初識(shí)變量常量字符串轉(zhuǎn)義符及注釋方式簡(jiǎn)介

    C語(yǔ)言初識(shí)變量常量字符串轉(zhuǎn)義符及注釋方式簡(jiǎn)介

    最強(qiáng)的C語(yǔ)言筆記,此處對(duì)于C語(yǔ)言的基礎(chǔ)部分做一個(gè)簡(jiǎn)要的介紹,作者實(shí)屬初學(xué),寫(xiě)博客也是作者學(xué)習(xí)的一個(gè)過(guò)程,若文中內(nèi)容有理解不到位或者有不當(dāng)之處,還請(qǐng)朋友們不吝指正
    2021-11-11
  • C語(yǔ)言詳解UDP通信的實(shí)現(xiàn)

    C語(yǔ)言詳解UDP通信的實(shí)現(xiàn)

    UDP協(xié)議是用戶(hù)數(shù)據(jù)報(bào)協(xié)議,面向無(wú)連接的、不穩(wěn)定、不可靠、不安全的數(shù)據(jù)報(bào)傳遞---更像是是收發(fā)短信;UDP傳輸不需要建立連接,傳輸效率更高,在穩(wěn)定的局域網(wǎng)內(nèi)環(huán)境相對(duì)可靠;UDP天然支持多客戶(hù)端
    2022-05-05
  • Qt中實(shí)現(xiàn)多線(xiàn)程導(dǎo)出數(shù)據(jù)功能的四種方式小結(jié)

    Qt中實(shí)現(xiàn)多線(xiàn)程導(dǎo)出數(shù)據(jù)功能的四種方式小結(jié)

    在以往的項(xiàng)目開(kāi)發(fā)中,在很多地方用到了多線(xiàn)程,本文將記錄下在Qt開(kāi)發(fā)中用到的多線(xiàn)程技術(shù)實(shí)現(xiàn)方法,以導(dǎo)出指定范圍的數(shù)字到txt文件為例,展示多線(xiàn)程不同的實(shí)現(xiàn)方式
    2025-08-08
  • C/C++程序鏈接與反匯編工具objdump的使用介紹

    C/C++程序鏈接與反匯編工具objdump的使用介紹

    這篇文章主要介紹了C/C++程序鏈接與反匯編工具objdump的使用,程序構(gòu)建過(guò)程的第二個(gè)階段就是鏈接,鏈接過(guò)程輸入的是目標(biāo)文件的集合。每個(gè)目標(biāo)文件可以被看作單個(gè)源代碼文件的二進(jìn)制存儲(chǔ)版本
    2023-02-02
  • C++實(shí)現(xiàn)HTTP服務(wù)的示例代碼

    C++實(shí)現(xiàn)HTTP服務(wù)的示例代碼

    本文主要介紹了C++實(shí)現(xiàn)HTTP服務(wù)的示例代碼,C++ HTTP,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-04-04
  • 通俗易懂的C++前綴和與差分算法圖文示例詳解

    通俗易懂的C++前綴和與差分算法圖文示例詳解

    這篇文章主要為大家非常通俗易懂的講解了C++前綴和與差分算法的圖文分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2021-11-11
  • C++設(shè)計(jì)模式之Static Factory模式詳解

    C++設(shè)計(jì)模式之Static Factory模式詳解

    這篇文章主要為大家詳細(xì)介紹了C++設(shè)計(jì)模式之Static Factory模式的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)哈希表詳解

    C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)哈希表詳解

    哈希表是一種根據(jù)關(guān)鍵碼去尋找值的數(shù)據(jù)映射結(jié)構(gòu),該結(jié)構(gòu)通過(guò)把關(guān)鍵碼映射的位置去尋找存放值的地方,說(shuō)起來(lái)可能感覺(jué)有點(diǎn)復(fù)雜,我想我舉個(gè)例子你就會(huì)明白了,最典型的的例子就是字典
    2022-02-02

最新評(píng)論

彰武县| 涪陵区| 千阳县| 通渭县| 龙岩市| 洪江市| 阿鲁科尔沁旗| 泾阳县| 牡丹江市| 青海省| 司法| 林口县| 兴化市| 高安市| 忻城县| 新和县| 阿克| 西藏| 温宿县| 紫云| 时尚| 肃南| 鄂伦春自治旗| 潍坊市| 义乌市| 无极县| 大埔区| 白玉县| 上栗县| 太谷县| 兴义市| 寿宁县| 隆林| 临湘市| 铁岭市| 韩城市| 汝州市| 承德市| 遂宁市| 湘潭市| 呼图壁县|