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

C++中純虛函數(shù)的實例詳解

 更新時間:2022年06月13日 09:03:25   作者:Y.你壕  
純虛函數(shù)就是一個在基類中的虛函數(shù),差別只是在一般的虛函數(shù)聲明的后面加了“=0”,下面這篇文章主要給大家介紹了關(guān)于C++中純虛函數(shù)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下

虛函數(shù)和純虛函數(shù)

之前學過虛函數(shù),語法:virtual 返回值類型 函數(shù)名(參數(shù)列表),然后這個類也就變成的虛基類,然后子類重寫父類的虛函數(shù)。

純虛函數(shù),語法:virtual 返回值類型 函數(shù)名(參數(shù)列表)=0,當類中有了純虛函數(shù),這個類也稱為抽象類。抽象類特點:無法實例化對象,子類必須重寫抽象類中的純虛函數(shù),否則也屬于抽象類。

class Base
{
public:
    virtual void Examp() = 0;//純虛函數(shù)
    ~Base()
    {
        cout << "父類的析構(gòu)函數(shù)" << endl;
    }
};
 
class Son:public Base
{
public:
    void Examp()
    {
        cout << "重寫了父類的純虛函數(shù)" << endl;
    }
    
    ~Son()
    {
        cout << "子類的析構(gòu)函數(shù)" << endl;
    }
};
 
int main()
{
    Son p1;
    p1.Examp();
    system("pause");
}

上面是最簡單的純虛函數(shù)代碼,子類必須得重寫重寫抽象類中的純虛函數(shù),不然不能實例化對象。

接下來我們?nèi)绻米宇悓ο箝_辟堆區(qū),那么會帶來父類指針釋放子類對象時不干凈的問題,即子類的析構(gòu)函數(shù)不能夠正常的被調(diào)用,會帶來內(nèi)存泄漏的問題:

int main()
{
    Son *p1=new Son;//子類對象開辟堆區(qū)
    p1->Examp();
    delete p1;//釋放堆區(qū),自動調(diào)用析構(gòu)函數(shù)
    system("pause");
}

為了解決這個問題,可以利用虛析構(gòu)和純虛析構(gòu),也很簡單,直接在父類的析構(gòu)函數(shù)前面加上virtual關(guān)鍵字就成為了虛析構(gòu)函數(shù),這個類也會成為抽象類。

class Base
{
public:
    virtual void Examp() = 0;//純虛函數(shù)
    virtual ~Base()//虛析構(gòu)
    {
        cout << "父類的析構(gòu)函數(shù)" << endl;
    }
};

或者是利用純虛析構(gòu)

class Base
{
public:
    virtual void Examp() = 0;//純虛函數(shù)
 
    virtual ~Base() = 0;//類內(nèi)聲明
};
 
Base::~Base()//類外實現(xiàn)
{
        cout << "父類的析構(gòu)函數(shù)" << endl;
}

附:純虛函數(shù)的應用

包含純虛函數(shù)的類叫抽象類,它不能生成對象,用戶不能創(chuàng)建類的實例,只能創(chuàng)建派生類的實例。

注明:純虛函數(shù)必須在繼承類中重新聲明函數(shù)(去掉后面的0,否則該派生類也不能實例化)。就是基類告訴子類,“你必須提供一個純虛函數(shù)的實現(xiàn),但我不知道你會怎樣實現(xiàn)它。”

代碼實現(xiàn):

include<stdio.h>
#include<iostream>
using namespace std;
class Base
{
public:
        virtual void func()=0;  //在基類中聲明純虛函數(shù)
};
class Derived:public Base
{
public:
        void func()         //在子類中重寫純虛函數(shù)
        {
                cout<<"哈哈"<<endl;
        }
};
int main()
{
        Base *b=new Derived();      //基類的指針調(diào)用子類重寫的純虛函數(shù)
        b->func();
        return 0;
}

總結(jié)

虛析構(gòu)或純虛析構(gòu)就是用來解決通過父類指針釋放子類對象

如果子類中沒有堆區(qū)數(shù)據(jù),可以不寫為虛析構(gòu)或純虛析構(gòu)

到此這篇關(guān)于C++中純虛函數(shù)的文章就介紹到這了,更多相關(guān)C++純虛函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vscode使用cmake時將命令行參數(shù)傳遞給調(diào)試目標的方法

    vscode使用cmake時將命令行參數(shù)傳遞給調(diào)試目標的方法

    這篇文章主要介紹了vscode使用cmake時將命令行參數(shù)傳遞給調(diào)試目標,下面介紹了一個示例,將參數(shù)first_arg, second-arg和third arg傳遞給程序(此處需要注意,third arg中間雖然存在空格,但是仍然被視作一個參數(shù)),需要的朋友參考下吧
    2024-03-03
  • C語言 makefile學習及實現(xiàn)實例

    C語言 makefile學習及實現(xiàn)實例

    這篇文章主要介紹了C語言 makefile學習及實現(xiàn)實例的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • Qt學習教程之表格控件螞蟻線詳解

    Qt學習教程之表格控件螞蟻線詳解

    如果有用過PS的選區(qū)工具應該就會知道螞蟻線是什么東西了,就是用來表示選區(qū)的一種虛線,關(guān)鍵還是要動態(tài)的!下面這篇文章主要給大家介紹了關(guān)于Qt學習教程之表格控件螞蟻線的相關(guān)資料,需要的朋友可以參考下
    2018-07-07
  • C++中的聚合類定義與用法分析

    C++中的聚合類定義與用法分析

    這篇文章主要介紹了C++中的聚合類定義與用法,結(jié)合實例形式分析了C++中聚合類的簡單定義、使用方法與相關(guān)注意事項,需要的朋友可以參考下
    2017-08-08
  • C++實現(xiàn)一個簡單的線程池的示例代碼

    C++實現(xiàn)一個簡單的線程池的示例代碼

    本文主要介紹了C++實現(xiàn)一個簡單的線程池的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-05-05
  • 詳解C++編程中表達式的語義與計算順序

    詳解C++編程中表達式的語義與計算順序

    這篇文章主要介紹了C++編程中表達式的語義與計算順序,是C++入門學習中的基礎知識,需要的朋友可以參考下
    2016-01-01
  • C++ LeetCode1780判斷數(shù)字是否可以表示成三的冪的和

    C++ LeetCode1780判斷數(shù)字是否可以表示成三的冪的和

    這篇文章主要為大家介紹了C++ LeetCode1780判斷數(shù)字是否可以表示成三的冪的和題解示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • 手動添加bits/stdc++.h到vs2017的詳細步驟

    手動添加bits/stdc++.h到vs2017的詳細步驟

    這篇文章主要介紹了手動添加bits/stdc++.h到vs2017的詳細步驟,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • C++ vector在多線程操作中出現(xiàn)內(nèi)存錯誤問題及解決

    C++ vector在多線程操作中出現(xiàn)內(nèi)存錯誤問題及解決

    這篇文章主要介紹了C++ vector在多線程操作中出現(xiàn)內(nèi)存錯誤問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • C語言實現(xiàn)搶紅包算法

    C語言實現(xiàn)搶紅包算法

    這篇文章主要為大家詳細介紹了C語言搶紅包算法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09

最新評論

七台河市| 新干县| 西盟| 丹江口市| 潮安县| 武冈市| 长泰县| 兴城市| 木兰县| 武邑县| 房产| 刚察县| 达州市| 巴马| 临泽县| 湛江市| 柳林县| 邹城市| 磐安县| 深水埗区| 天柱县| 合水县| 赣州市| 普宁市| 万州区| 扎鲁特旗| 兴国县| 茌平县| 勃利县| 阳信县| 扎赉特旗| 呼和浩特市| 海晏县| 永顺县| 资兴市| 南通市| 峨眉山市| 阳原县| 花莲县| 五指山市| 德昌县|