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

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

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

概述

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

在這里插入圖片描述

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

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

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

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

運(yùn)算符重載

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)

動(dòng)態(tài)多態(tài)

動(dòng)態(tài)多態(tài) (dynamic polymorphism) 是在程序運(yùn)行中才動(dòng)態(tài)地確定操作所針對(duì)的對(duì)象.

非動(dòng)態(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)建對(duì)象
    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 對(duì)象的頭銜并沒有輸出, 因?yàn)?pt 指針的類型是 Person, 調(diào)用的是 Person 的display()函數(shù).

動(dòng)態(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)建對(duì)象
    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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言近萬字為你講透棧和隊(duì)列

    C語言近萬字為你講透棧和隊(duì)列

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

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

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

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

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

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

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

    C++ 逗號(hào)運(yùn)算符的具體使用

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

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

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

    C語言平衡二叉樹詳解

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

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

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

    Qt中常用對(duì)話框使用技巧及注意事項(xiàng)

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

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

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

最新評(píng)論

烟台市| 蓝田县| 甘泉县| 汉寿县| 龙山县| 江口县| 陈巴尔虎旗| 梅州市| 靖州| 石屏县| 巩义市| 北宁市| 仁化县| 乡城县| 安龙县| 明星| 昌图县| 绥中县| 抚顺市| 新疆| 阿克陶县| 西平县| 乐陵市| 九江市| 衡南县| 泗阳县| 周宁县| 岢岚县| 平塘县| 福建省| 武乡县| 特克斯县| 阆中市| 灵石县| 湘潭县| 台北市| 合水县| 潜山县| 疏勒县| 泰宁县| 河南省|