真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C++中的多態(tài)詳解

[TOC]
#虛函數(shù)和多態(tài)

創(chuàng)新互聯(lián)專注于新寧網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供新寧營銷型網(wǎng)站建設(shè),新寧網(wǎng)站制作、新寧網(wǎng)頁設(shè)計、新寧網(wǎng)站官網(wǎng)定制、微信小程序開發(fā)服務(wù),打造新寧網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供新寧網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

虛函數(shù)

定義:類的成員函數(shù)前面加virtual關(guān)鍵字,則這個成員函數(shù)稱為虛函數(shù)。

###代碼示例:

class Person
{
public:
    virtual void Buyticket()
    {
        cout << "買票—全價" << endl;
    }
protected:
    char* _name;
};

虛函數(shù)重寫

定義:當在子類的定義了一個與父類完全相同的虛函數(shù)時,則稱子類的這個函數(shù)重寫(也稱覆蓋)了父類的這個虛函數(shù)。

代碼示例:

class Person
{
public:
    virtual void Buyticket()
    {
        cout << "買票—全價" << endl;
    }
protected:
    char* _name;
};

class Student : public Person
{
public:
    virtual void Buyticket()
    {
        cout << "買票—半票" << endl;
    }
protected:
    char* _name;
};

##多態(tài)
###定義:一個對象呈現(xiàn)多種形態(tài)
###代碼示例:

class Person
{
public:
    virtual void Buyticket()
    {
        cout << "買票—全價" << endl;
    }
protected:
    char* _name;
};

class Student : public Person
{
public:
    virtual void Buyticket()
    {
        cout << "買票—半票" << endl;
    }
protected:
    char* _name;
};

void Fun(Person &p)//一個函數(shù)實現(xiàn)兩種形態(tài)
{
    p.Buyticket();
}

int main()
{
    Person p;
    Student s;
    Fun(p);
    Fun(s);
    system("pause");
    return 0;
}

看看多態(tài)的結(jié)果:
C++中的多態(tài)詳解

多態(tài)的的特性:

  1. 派生類重寫基類的虛函數(shù)實現(xiàn)多態(tài),要求函數(shù)名、參數(shù)列表、返回值完全相同。(協(xié)變除外)
    1. 基類中定義了虛函數(shù),在派生類中該函數(shù)始終保持虛函數(shù)的特性。
    2. 只有類的成員函數(shù)才能定義為虛函數(shù)。
    3. 靜態(tài)成員函數(shù)不能定義為虛函數(shù)。
    4. 如果在類外定義虛函數(shù),只能在聲明函數(shù)時加virtual,類外定義函數(shù)時不能加virtual。
    5. 構(gòu)造函數(shù)不能為虛函數(shù),雖然可以將operator=定義為虛函數(shù),但是最好不要將operator=定義為虛函數(shù),因為容易使用時容易引
      起混淆。
    6. 不要在構(gòu)造函數(shù)和析構(gòu)函數(shù)里面調(diào)用虛函數(shù),在構(gòu)造函數(shù)和析構(gòu)函數(shù)中,對象是不完整的,可能會發(fā)生未定義的行為。
    7. 最好把基類的析構(gòu)函數(shù)聲明為虛函數(shù)。(why?另外析構(gòu)函數(shù)比較特殊,因為派生類的析構(gòu)函數(shù)跟基類的析構(gòu)函數(shù)名稱不一樣,但
      是構(gòu)成覆蓋,這里是因為編譯器做了特殊處理)

本文名稱:C++中的多態(tài)詳解
網(wǎng)頁URL:http://weahome.cn/article/gegcsj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部