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

C/C++中多態(tài)性詳解及其作用介紹

 更新時間:2021年09月06日 15:50:50   作者:我是小白呀  
這篇文章主要介紹了C/C++中多態(tài)性(polymorphism)詳解及其作用介紹,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

概述

多態(tài)性 (polymorphism) 是面向?qū)ο蟪绦蛟O(shè)計的一個重要特征. 利用多態(tài)性擴展設(shè)計和實現(xiàn)一個易于擴展的系統(tǒng).

在這里插入圖片描述

C++ 中多態(tài)性:

  • 同一函數(shù)名可以實現(xiàn)不同的功能
  • 用一個函數(shù)名調(diào)用不同內(nèi)容的函數(shù)完成不同的工作

靜態(tài)多態(tài)

靜態(tài)多態(tài) (static polymorphism) 是通過函數(shù)的重載實現(xiàn)的, 包括函數(shù)的重載和運算符重載. 在程序編譯時系統(tǒng)就能覺得調(diào)用哪個函數(shù).

函數(shù)重載

int main() {
    cout << max(1,2) << endl;
    cout << max(1.2, 2.3) << endl;

    return 0;
}

int max(int a, int b) {
    return (a > b) ? a:b;
}

double max(double a, double b){
    return (a > b) ? a:b;
}

輸出結(jié)果:

2
2.3

運算符重載

int main() {
    Complex c1(2, 4), c2(6, 10);
    c1 = c1 + c2;
    c1.display();

    return 0;
}

Complex Complex::operator+(Complex &c) {
    return Complex(real + c.real, imag + c.imag);
}

輸出結(jié)果:

(8, 14i)

動態(tài)多態(tài)

動態(tài)多態(tài) (dynamic polymorphism) 是在程序運行中才動態(tài)地確定操作所針對的對象.

非動態(tài)

Person 類:

#ifndef PROJECT6_PERSON_H
#define PROJECT6_PERSON_H

#include <iostream>
#include <string>
using namespace std;

class Person {
private:
    string name;  // 姓名
    char gender;  // 性別
public:
    Person(string n, char g) : name(n), gender(g) {}
    void display() {
        cout << "name: " << name << endl;
        cout << "gender: " << gender << endl;
    }
};

#endif //PROJECT6_PERSON_H

Teacher 類:

#ifndef PROJECT6_TEACHER_H
#define PROJECT6_TEACHER_H

#include <iostream>
#include <string>
#include "Person.h"
using namespace std;

class Teacher : public Person {
private:
    string title;  // 頭銜
public:
    Teacher(string n, char g, string t) : Person(n, g), title(t) {}
    void display() {
        Person::display();
        cout << "title: " << title << endl;
    }
};

#endif //PROJECT6_TEACHER_H

main:

#include <iostream>
#include "Person.h"
#include "Teacher.h"

int main() {
    // 創(chuàng)建對象
    Person p1("王叔叔", 'm'), *pt;  // 指針類型為
    Teacher t1("王老師", 'f', "教導(dǎo)主任");

    pt = &p1;
    pt->display();
    pt = &t1;
    pt->display();

    return 0;
}

輸出結(jié)果:

name: 王叔叔
gender: m
name: 王老師
gender: f

我們可以發(fā)現(xiàn) Teacher 對象的頭銜并沒有輸出, 因為 pt 指針的類型是 Person, 調(diào)用的是 Person 的display()函數(shù).

動態(tài)

我們把show()函數(shù)聲明為虛函數(shù).

Person 類:

#ifndef PROJECT6_PERSON_H
#define PROJECT6_PERSON_H

#include <iostream>
#include <string>
using namespace std;

class Person {
private:
    string name;  // 姓名
    char gender;  // 性別
public:
    Person(string n, char g) : name(n), gender(g) {}
    virtual void display() {
        cout << "name: " << name << endl;
        cout << "gender: " << gender << endl;
    }
};

#endif //PROJECT6_PERSON_H

main:

#include <iostream>
#include "Person.h"
#include "Teacher.h"

int main() {
    // 創(chuàng)建對象
    Person p1("王叔叔", 'm'), *pt;  // 指針類型為
    Teacher t1("王老師", 'f', "教導(dǎo)主任");

    pt = &p1;
    pt->display();
    pt = &t1;
    pt->display();

    return 0;
}

輸出結(jié)果:

name: 王叔叔
gender: m
name: 王老師
gender: f
title: 教導(dǎo)主任

到此這篇關(guān)于C/C++中多態(tài)性詳解及其作用介紹的文章就介紹到這了,更多相關(guān)C++多態(tài)性內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言近萬字為你講透棧和隊列

    C語言近萬字為你講透棧和隊列

    對于線性表,我們可能要執(zhí)行下列操作:訪問表的第k個結(jié)點、在k這個結(jié)點之前或者之后插入一個新結(jié)點,抑或是刪除第k個結(jié)點等等操作,其中我們會遇到值對第一個或者最后一個結(jié)點插入、刪除、和訪問值的線性表,我們給它們以特殊的名稱:棧、隊列、雙端隊列
    2022-05-05
  • 基于MFC實現(xiàn)類的序列化詳解

    基于MFC實現(xiàn)類的序列化詳解

    序列化是將程序中的對象以一種二進制格式存儲到存儲設(shè)備中(例如文本/數(shù)據(jù)庫等),以實現(xiàn)“永生”或隨意“流動”。本文將為大家詳細講講如何基于MFC實現(xiàn)類的序列化,需要的可以參考一下
    2022-07-07
  • C++簡單又輕松的講解類和對象中友元函數(shù)

    C++簡單又輕松的講解類和對象中友元函數(shù)

    采用類的機制后實現(xiàn)了數(shù)據(jù)的隱藏與封裝,類的數(shù)據(jù)成員一般定義為私有成員,成員函數(shù)一般定義為公有的,依此提供類與外界間的通信接口。但是,有時需要定義一些函數(shù),這些函數(shù)不是類的一部分,但又需要頻繁地訪問類的數(shù)據(jù)成員,這時可以將這些函數(shù)定義為該類的友元函數(shù)
    2022-06-06
  • C語言深入回顧講解結(jié)構(gòu)體對齊

    C語言深入回顧講解結(jié)構(gòu)體對齊

    C 數(shù)組允許定義可存儲相同類型數(shù)據(jù)項的變量,結(jié)構(gòu)是 C 編程中另一種用戶自定義的可用的數(shù)據(jù)類型,它允許你存儲不同類型的數(shù)據(jù)項,本篇讓我們來了解C 的結(jié)構(gòu)體內(nèi)存對齊
    2022-06-06
  • C++ 逗號運算符的具體使用

    C++ 逗號運算符的具體使用

    本文主要介紹了C++ 逗號運算符的具體使用,使用逗號運算符是為了把幾個表達式放在一起,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • C++中的Z字形變換問題

    C++中的Z字形變換問題

    將一個給定字符串?s?根據(jù)給定的行數(shù)?numRows?,以從上往下、從左到右進行?Z?字形排列,這樣一個需求怎么實現(xiàn)呢,下面小編給大家?guī)砹薈++中的Z字形變換問題,需要的朋友可以參考下
    2022-07-07
  • C語言平衡二叉樹詳解

    C語言平衡二叉樹詳解

    這篇文章主要介紹了C語言平衡二叉樹的相關(guān)資料,需要的朋友可以參考下,小編覺得這篇文章寫的還不錯,希望能夠給你帶來幫助
    2021-11-11
  • C++關(guān)于size_t的bug解決案例

    C++關(guān)于size_t的bug解決案例

    這篇文章主要為大家介紹了C++關(guān)于size_t的bug解決案例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • Qt中常用對話框使用技巧及注意事項

    Qt中常用對話框使用技巧及注意事項

    Qt?為應(yīng)用程序設(shè)計提供了一些常用的標準對話框,如打開文件對話框、選擇顏色對話框、信息提示和確認選擇對話框、標準輸入對話框等,這篇文章主要給大家介紹了關(guān)于Qt中常用對話框使用技巧及注意事項的相關(guān)資料,需要的朋友可以參考下
    2024-04-04
  • C++分析構(gòu)造函數(shù)與析造函數(shù)的特點梳理

    C++分析構(gòu)造函數(shù)與析造函數(shù)的特點梳理

    本文對類的構(gòu)造函數(shù)和析構(gòu)函數(shù)進行總結(jié),主要包括了構(gòu)造函數(shù)的初始化、重載、使用參數(shù)和默認參數(shù),拷貝構(gòu)造函數(shù)和析構(gòu)函數(shù),希望能幫助讀者在程序開發(fā)中更好的理解類,屬于C/C++基礎(chǔ)
    2022-05-05

最新評論

鄄城县| 固安县| 平江县| 邵阳市| 涟源市| 栖霞市| 海原县| 封开县| 乌兰县| 辽阳市| 象州县| 陵川县| 喀喇沁旗| 兴山县| 新绛县| 芮城县| 成安县| 宜兴市| 南靖县| 徐州市| 涟水县| 灵寿县| 区。| 普定县| 革吉县| 城口县| 鲁山县| 临江市| 观塘区| 额敏县| 铜山县| 巴中市| 吕梁市| 盈江县| 南安市| 罗城| 疏勒县| 鹰潭市| 年辖:市辖区| 通渭县| 无棣县|