欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++類成員構造函數(shù)和析構函數(shù)順序示例詳細講解

 更新時間:2013年11月26日 10:09:22   作者:  
這篇文章主要介紹了C++類成員構造和析構順序示例,看了這個例子大家就可以明白c++構造析構的奧秘

對象并不是突然建立起來的,創(chuàng)建對象必須時必須同時創(chuàng)建父類以及包含于其中的對象。C++遵循如下的創(chuàng)建順序:

(1)如果某個類具體基類,執(zhí)行基類的默認構造函數(shù)。

(2)類的非靜態(tài)數(shù)據(jù)成員,按照聲明的順序創(chuàng)建。

(3)執(zhí)行該類的構造函數(shù)。

即構造類時,會先構造其父類,然后創(chuàng)建類成員,最后調(diào)用本身的構造函數(shù)。

下面看一個例子吧

復制代碼 代碼如下:

class c
{
public:
    c(){ printf("c\n"); }
protected:
private:
};

class b
{
public:
    b(){ printf("b\n");}
protected:
    c C;
private:
};

class a : public b
{
public:
    a(){ printf("a\n"); }
protected:
private:
};

int main()
{
    a A;
    getchar();
}



分析一下吧  首先定義了3個類 a b c,其中a繼承自b ,在main函數(shù)里面構造a ,因為a是繼承b ,所以會先構造b,然后b類又有一個成員c類,所以c類是最先構造的,然后是b ,最后才是a。

在看一個例子,就是上面的該了一下:

復制代碼 代碼如下:

class c
{
public:
    c(){ printf("c\n"); }
protected:
private:
};

class b
{
public:
    b(){ printf("b\n");}
protected:
private:
};

class a : public b
{
public:
    a(){ printf("a\n"); }
protected:
    c C;
private:
};

int main()
{
    a A;
    getchar();
}

沒有改變多少,只是在a添加了c成員,而b去掉了。

同樣是在main里面構造a ,a繼承自b,所以先構造b,然后構造a本身的數(shù)據(jù)成員c,最后才調(diào)用的a本身的構造函數(shù)。。

這里大家應該明白構造的細節(jié)了吧 。。

接下來看析構的順序:

(1)調(diào)用類的析構函數(shù)。

(2)銷毀數(shù)據(jù)成員,與創(chuàng)建的順序相反。

(3)如果有父類,調(diào)用父類的析構函數(shù)。

也看一個例子吧:

復制代碼 代碼如下:

class c
{
public:
    c(){}
    ~c(){ printf("c\n"); }
protected:
private:
};

class b
{
public:
    b(){}
    ~b(){ printf("b\n");}
protected:
private:
};

class a : public b
{
public:
    a(){}
    ~a(){ printf("a\n"); }
protected:
    c C;
private:
};

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



其過程是,在main函數(shù)結(jié)束時,會銷毀a,就會先調(diào)用a的析構函數(shù),先后銷毀a的數(shù)據(jù)成員c,最后銷毀a的父類b。其實就是跟創(chuàng)建時的順序反了過來。

好了,到這里相信大家已經(jīng)明白構造析構的奧秘了吧!

相關文章

  • C++實現(xiàn)會員管理程序

    C++實現(xiàn)會員管理程序

    這篇文章主要為大家詳細介紹了C++實現(xiàn)會員管理程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • C語言實現(xiàn)快速排序改進版

    C語言實現(xiàn)快速排序改進版

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)快速排序的改進代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • C語言實現(xiàn)輸入兩個數(shù)字將其按從小到大輸出的方法

    C語言實現(xiàn)輸入兩個數(shù)字將其按從小到大輸出的方法

    這篇文章主要介紹了C語言實現(xiàn)輸入兩個數(shù)字將其按從小到大輸出的方法,本文通過代碼講解的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • C++實現(xiàn)LeetCode(76.最小窗口子串)

    C++實現(xiàn)LeetCode(76.最小窗口子串)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(76.最小窗口子串),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • uboot添加自定義命令的實現(xiàn)步驟

    uboot添加自定義命令的實現(xiàn)步驟

    uboot 屬于bootloader的一種,是用來引導啟動內(nèi)核的,它的最終目的就是從flash中讀出內(nèi)核,放到內(nèi)存中,啟動內(nèi)核,這篇文章主要介紹了uboot添加自定義命令的實現(xiàn)步驟,需要的朋友可以參考下
    2022-11-11
  • QT中QTableWidget加載大量數(shù)據(jù)不卡頓的解決

    QT中QTableWidget加載大量數(shù)據(jù)不卡頓的解決

    本文主要介紹了QT中QTableWidget加載大量數(shù)據(jù)不卡頓的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • c語言stack(棧)和heap(堆)的使用詳解

    c語言stack(棧)和heap(堆)的使用詳解

    這篇文章主要介紹了c語言stack(棧)和heap(堆)的使用詳解,需要的朋友可以參考下
    2014-04-04
  • C++關于引用(reference)的代碼案例

    C++關于引用(reference)的代碼案例

    引用是C++中的一種重要特性,它可以讓代碼更加高效、簡潔和易讀,本文將深入探討引用的相關知識,包括引用的概念、使用方法、優(yōu)點和注意事項等。建議根據(jù)給出的代碼案例練一下,熟悉即可
    2023-05-05
  • C語言實現(xiàn)交換排序算法(冒泡,快速排序)的示例代碼

    C語言實現(xiàn)交換排序算法(冒泡,快速排序)的示例代碼

    這篇文章主要為大家詳細介紹了如何利用C語言實現(xiàn)交換排序算法(冒泡排序、快速排序),文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2022-07-07
  • AVX2指令集優(yōu)化整形數(shù)組求和算法

    AVX2指令集優(yōu)化整形數(shù)組求和算法

    這篇文章主要為大家介紹了AVX2指令集優(yōu)化整形數(shù)組求和算法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05

最新評論