C語言模擬實現(xiàn)C++的繼承與多態(tài)示例
一、面向過程編程與面向?qū)ο缶幊痰膮^(qū)別
眾所周知,C語言是一種典型的面向過程編程語言,而C++確實在它的基礎(chǔ)上改進的一款面向?qū)ο缶幊陶Z言,那么,面向過程與面向?qū)ο蟮降子惺裁礃拥膮^(qū)別呢?
【從設(shè)計方法角度看】
面向過程程序設(shè)計方法采用函數(shù)(或過程)來描述對數(shù)據(jù)的操作,但又將函數(shù)與其操作的數(shù)據(jù)分離開來。
面向?qū)ο蟪绦蛟O(shè)計方法是將數(shù)據(jù)和對象的操作封裝在一起,作為一個整體來處理。
【從維護角度看】
面向過程程序設(shè)計以過程為中心,難于維護。
面向?qū)ο蟪绦蛟O(shè)計以數(shù)據(jù)為中心,數(shù)據(jù)相對功能而言,有較強的穩(wěn)定性,因此更易于維護。
二、繼承與多態(tài)的概念
繼承:是面向?qū)ο笞铒@著的一個特性。繼承是從已有的類中派生出新的類,新的類能吸收已有類的數(shù)據(jù)屬性 和行為,并能擴展新的能力,已有類被稱為父類/基類,新增加的類被稱作子類/派生類。
多態(tài):按字面的意思就是“多種狀態(tài)”。在面向?qū)ο笳Z言中,接口的多種不同現(xiàn)方式即為多態(tài)。同一操作作 用于不同的對象,可以有不同的解釋,產(chǎn)生不同的執(zhí)行結(jié)果,這就是多態(tài)性。簡單說就是允許基類的 指針指向子類的對象。
三、代碼實現(xiàn)C語言模擬繼承與多態(tài)
#pragma once
#include <iostream>
using namespace std;
//C++中的繼承與多態(tài)
struct A
{
virtual void fun() //C++中的多態(tài):通過虛函數(shù)實現(xiàn)
{
cout<<"A:fun()"<<endl;
}
int a;
};
struct B:public A //C++中的繼承:B類公有繼承A類
{
virtual void fun() //C++中的多態(tài):通過虛函數(shù)實現(xiàn)(子類的關(guān)鍵字virtual可加可不加)
{
cout<<"B:fun()"<<endl;
}
int b;
};
//C語言模擬C++的繼承與多態(tài)
typedef void (*FUN)(); //定義一個函數(shù)指針來實現(xiàn)對成員函數(shù)的繼承
struct _A //父類
{
FUN _fun; //由于C語言中結(jié)構(gòu)體不能包含函數(shù),故只能用函數(shù)指針在外面實現(xiàn)
int _a;
};
struct _B //子類
{
_A _a_; //在子類中定義一個基類的對象即可實現(xiàn)對父類的繼承
int _b;
};
void _fA() //父類的同名函數(shù)
{
printf("_A:_fun()\n");
}
void _fB() //子類的同名函數(shù)
{
printf("_B:_fun()\n");
}
void Test()
{
//測試C++中的繼承與多態(tài)
A a; //定義一個父類對象a
B b; //定義一個子類對象b
A* p1 = &a; //定義一個父類指針指向父類的對象
p1->fun(); //調(diào)用父類的同名函數(shù)
p1 = &b; //讓父類指針指向子類的對象
p1->fun(); //調(diào)用子類的同名函數(shù)
//C語言模擬繼承與多態(tài)的測試
_A _a; //定義一個父類對象_a
_B _b; //定義一個子類對象_b
_a._fun = _fA; //父類的對象調(diào)用父類的同名函數(shù)
_b._a_._fun = _fB; //子類的對象調(diào)用子類的同名函數(shù)
_A* p2 = &_a; //定義一個父類指針指向父類的對象
p2->_fun(); //調(diào)用父類的同名函數(shù)
p2 = (_A*)&_b; //讓父類指針指向子類的對象,由于類型不匹配所以要進行強轉(zhuǎn)
p2->_fun(); //調(diào)用子類的同名函數(shù)
}
運行結(jié)果:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++基于reactor的服務(wù)器百萬并發(fā)實現(xiàn)與講解
這篇文章主要介紹了C++基于reactor的服務(wù)器百萬并發(fā)實現(xiàn)與講解,本文通過實例圖文相結(jié)合給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-07-07
C++常用函數(shù)總結(jié)(algorithm 頭文件)
本文給大家詳細介紹了algorithm 頭文件中最常用的函數(shù)及其使用方法,當然這只是其中的一部分,algorithm 頭文件中還有很多其他的函數(shù),感興趣的朋友一起看看吧2023-12-12
C++實現(xiàn)十六進制字符串轉(zhuǎn)換成int整形值的示例
今天小編就為大家分享一篇關(guān)于C++實現(xiàn)十六進制字符串轉(zhuǎn)換成int整形值的示例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12

