国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C語言模擬實(shí)現(xiàn)C++的繼承與多態(tài)示例

2020-01-26 14:08:29
字體:
供稿:網(wǎng)友

一、面向過程編程與面向?qū)ο缶幊痰膮^(qū)別

眾所周知,C語言是一種典型的面向過程編程語言,而C++確實(shí)在它的基礎(chǔ)上改進(jìn)的一款面向?qū)ο缶幊陶Z言,那么,面向過程與面向?qū)ο蟮降子惺裁礃拥膮^(qū)別呢?

【從設(shè)計(jì)方法角度看】

面向過程程序設(shè)計(jì)方法采用函數(shù)(或過程)來描述對(duì)數(shù)據(jù)的操作,但又將函數(shù)與其操作的數(shù)據(jù)分離開來。

面向?qū)ο蟪绦蛟O(shè)計(jì)方法是將數(shù)據(jù)和對(duì)象的操作封裝在一起,作為一個(gè)整體來處理。

【從維護(hù)角度看】

面向過程程序設(shè)計(jì)以過程為中心,難于維護(hù)。

面向?qū)ο蟪绦蛟O(shè)計(jì)以數(shù)據(jù)為中心,數(shù)據(jù)相對(duì)功能而言,有較強(qiáng)的穩(wěn)定性,因此更易于維護(hù)。

二、繼承與多態(tài)的概念

繼承:是面向?qū)ο笞铒@著的一個(gè)特性。繼承是從已有的類中派生出新的類,新的類能吸收已有類的數(shù)據(jù)屬性 和行為,并能擴(kuò)展新的能力,已有類被稱為父類/基類,新增加的類被稱作子類/派生類。

多態(tài):按字面的意思就是“多種狀態(tài)”。在面向?qū)ο笳Z言中,接口的多種不同現(xiàn)方式即為多態(tài)。同一操作作 用于不同的對(duì)象,可以有不同的解釋,產(chǎn)生不同的執(zhí)行結(jié)果,這就是多態(tài)性。簡(jiǎn)單說就是允許基類的 指針指向子類的對(duì)象。

三、代碼實(shí)現(xiàn)C語言模擬繼承與多態(tài)

#pragma once#include <iostream>using namespace std;//C++中的繼承與多態(tài)struct A{ virtual void fun() //C++中的多態(tài):通過虛函數(shù)實(shí)現(xiàn) {  cout<<"A:fun()"<<endl; } int a;};struct B:public A   //C++中的繼承:B類公有繼承A類{ virtual void fun() //C++中的多態(tài):通過虛函數(shù)實(shí)現(xiàn)(子類的關(guān)鍵字virtual可加可不加) {  cout<<"B:fun()"<<endl; } int b;};//C語言模擬C++的繼承與多態(tài)typedef void (*FUN)();  //定義一個(gè)函數(shù)指針來實(shí)現(xiàn)對(duì)成員函數(shù)的繼承struct _A  //父類{ FUN _fun; //由于C語言中結(jié)構(gòu)體不能包含函數(shù),故只能用函數(shù)指針在外面實(shí)現(xiàn) int _a;};struct _B   //子類{ _A _a_;  //在子類中定義一個(gè)基類的對(duì)象即可實(shí)現(xiàn)對(duì)父類的繼承 int _b;};void _fA()  //父類的同名函數(shù){ printf("_A:_fun()/n");}void _fB()  //子類的同名函數(shù){ printf("_B:_fun()/n");}void Test(){ //測(cè)試C++中的繼承與多態(tài) A a; //定義一個(gè)父類對(duì)象a B b; //定義一個(gè)子類對(duì)象b A* p1 = &a; //定義一個(gè)父類指針指向父類的對(duì)象 p1->fun(); //調(diào)用父類的同名函數(shù) p1 = &b;  //讓父類指針指向子類的對(duì)象 p1->fun(); //調(diào)用子類的同名函數(shù) //C語言模擬繼承與多態(tài)的測(cè)試 _A _a; //定義一個(gè)父類對(duì)象_a _B _b; //定義一個(gè)子類對(duì)象_b _a._fun = _fA;  //父類的對(duì)象調(diào)用父類的同名函數(shù) _b._a_._fun = _fB; //子類的對(duì)象調(diào)用子類的同名函數(shù) _A* p2 = &_a; //定義一個(gè)父類指針指向父類的對(duì)象 p2->_fun();  //調(diào)用父類的同名函數(shù) p2 = (_A*)&_b; //讓父類指針指向子類的對(duì)象,由于類型不匹配所以要進(jìn)行強(qiáng)轉(zhuǎn) p2->_fun();  //調(diào)用子類的同名函數(shù)}

運(yùn)行結(jié)果:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 安顺市| 鹤山市| 军事| 龙里县| 南宫市| 葵青区| 公主岭市| 乌兰浩特市| 兴国县| 柏乡县| 三门县| 山阳县| 龙游县| 凌云县| 繁峙县| 郸城县| 内江市| 黄平县| 自治县| 奉节县| 郧西县| 阿拉善左旗| 额尔古纳市| 永丰县| 祁连县| 广南县| 调兵山市| 苗栗县| 花莲县| 淮北市| 瑞金市| 叶城县| 吉林省| 汉川市| 上蔡县| 毕节市| 鄂州市| 海兴县| 墨玉县| 洪湖市| 称多县|