亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中的多態詳解

發布時間:2020-06-27 19:53:26 來源:網絡 閱讀:6691 作者:龍躍十二 欄目:編程語言

[TOC]
#虛函數和多態

虛函數

定義:類的成員函數前面加virtual關鍵字,則這個成員函數稱為虛函數。

###代碼示例:

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

虛函數重寫

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

代碼示例:

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

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

##多態
###定義:一個對象呈現多種形態
###代碼示例:

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)//一個函數實現兩種形態
{
    p.Buyticket();
}

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

看看多態的結果:
C++中的多態詳解

多態的的特性:

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

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

普定县| 桦川县| 呼和浩特市| 德惠市| 阜阳市| 四子王旗| 绥芬河市| 临汾市| 临洮县| 桃江县| 邓州市| 武强县| 乌兰县| 郸城县| 西城区| 喜德县| 开原市| 高尔夫| 弋阳县| 治多县| 嘉义市| 壶关县| 本溪市| 颍上县| 阿拉善右旗| 普兰店市| 务川| 砚山县| 尉氏县| 德惠市| 清镇市| 南昌县| 顺昌县| 南郑县| 松江区| 南江县| 汾阳市| 遂平县| 新丰县| 惠水县| 故城县|