日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++中对多态的理解

發(fā)布時(shí)間:2023/12/20 c/c++ 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++中对多态的理解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1 多態(tài):是指類中具有相似功能的不同函數(shù),使用同一個(gè)名稱來實(shí)現(xiàn);是對(duì)類的行為再抽象;多態(tài)是通過重載函數(shù)和虛函數(shù)來實(shí)現(xiàn)的。
2 繼承討論的是類與類的層次關(guān)系,多態(tài)則是考慮在不同層次的類中,以及在同一個(gè)類的內(nèi)部,同名成員函數(shù)之間的關(guān)系問題,是解決功能和行為的再抽象問題。
3 多態(tài)是指類族中具有相似功能的不同函數(shù)使用同一個(gè)名稱來實(shí)現(xiàn),從而可以使用相同的調(diào)用方式來調(diào)用這些具有不同功能的同名函數(shù)。
類型:
面向?qū)ο蟮亩鄳B(tài)性可以分為4類:
專用多態(tài):
(1)重載多態(tài):普通函數(shù)以及成員函數(shù)的重載。
(2)強(qiáng)制多態(tài):將一個(gè)變量的類型加以變化。
通用多態(tài):
(3)包含多態(tài):研究類族中定義于不同類中的同名成員函數(shù)的多態(tài)行為,主要通過虛函數(shù)來實(shí)現(xiàn)。
(4)參數(shù)多態(tài):與類模板相關(guān)聯(lián)。
實(shí)現(xiàn):
多態(tài)從實(shí)現(xiàn)的角度可以分為:
(1)編譯時(shí)的多態(tài):靜態(tài)聯(lián)編(重載、強(qiáng)制、參數(shù)),程序編譯連接階段完成。
(2)運(yùn)行時(shí)的多態(tài):動(dòng)態(tài)聯(lián)編(包含),程序運(yùn)行階段完成。
聯(lián)編:是指計(jì)算機(jī)程序自身彼此關(guān)聯(lián)的過程,就是把一條消息和一個(gè)對(duì)象的方法相結(jié)合的過程。
運(yùn)算符重載:
運(yùn)算符重載的實(shí)質(zhì)是函數(shù)重載,在實(shí)現(xiàn)過程中,首先把指定的運(yùn)算表達(dá)式轉(zhuǎn)化為對(duì)運(yùn)算符函數(shù)的調(diào)用,運(yùn)算對(duì)象轉(zhuǎn)化為運(yùn)算符函數(shù)的形參,然后根據(jù)實(shí)參的類型來確定需要調(diào)用的函數(shù),這個(gè)過程是在編譯過程中實(shí)現(xiàn)的。不能重載的運(yùn)算符有5個(gè):“.”,“*”,“::”,“? :”“sizeof”。
虛函數(shù):
虛函數(shù)是動(dòng)態(tài)聯(lián)編的基礎(chǔ),虛函數(shù)是非靜態(tài)成員函數(shù),虛函數(shù)經(jīng)過派生之后,在類族中可以實(shí)現(xiàn)運(yùn)行過程中的多態(tài)。
根據(jù)賦值兼容規(guī)則,可以使用派生類對(duì)象代替基類對(duì)象。如果用基類類型的指針指向派生類對(duì)象,就可以通過這個(gè)指針來訪問該對(duì)象。問題是派生到的只是從基類繼承來的同名成員。
解決這一問題的辦法就是:如果需要通過基類的指針指向派生類的對(duì)象,并訪問某個(gè)與基類同名的成員(如果是函數(shù),則原型完全相同)。那么,首先在基類中將這個(gè)同名函數(shù)說明為虛函數(shù)。
這樣,通過基類類型指針,就可以使屬于不同派生類的不同對(duì)象產(chǎn)生不同的行為,從而實(shí)現(xiàn)運(yùn)行過程中的多態(tài)。
一般虛成員函數(shù)實(shí)現(xiàn)的3個(gè)條件:
(1)首先類之間應(yīng)滿足賦值兼容規(guī)則。
(2)聲明虛函數(shù)。
(3)由成員函數(shù)調(diào)用,或者通過指針、引用來訪問虛函數(shù)。
如果使用對(duì)象名來訪問虛函數(shù),則聯(lián)編在編譯過程中就可以通過(靜態(tài)聯(lián)編),而無需在運(yùn)行中進(jìn)行。
虛析構(gòu)函數(shù):
如果一個(gè)類的析構(gòu)函數(shù)時(shí)虛函數(shù),那么,用它派生而來的所用子類的析構(gòu)函數(shù)也是虛函數(shù)。析構(gòu)函數(shù)設(shè)置為虛函數(shù)之后,在使用指針,引用時(shí)就可以動(dòng)態(tài)聯(lián)編,實(shí)現(xiàn)運(yùn)行時(shí)的多態(tài),保證使用基類類型的指針就能夠調(diào)用適當(dāng)?shù)奈鰳?gòu)函數(shù)針對(duì)不同的對(duì)象進(jìn)行清理工作。
抽象類:
(1)抽象類是一種特殊的類,它為一族類提供統(tǒng)一的操作界面,通過它為一個(gè)類族建立一個(gè)公共的接口,使類能夠更加有效的發(fā)揮多態(tài)性。
(2)建立抽象類,就是為了通過它多態(tài)地使用其中的成員函數(shù)。
(3)抽象類處于其層次的上層,一個(gè)抽象類自身無法實(shí)現(xiàn)化,而只能通過繼承機(jī)制。生成抽象類的非抽象派生類,然后實(shí)例化。但是,可以聲明一個(gè)抽象類的指針和引用。
(4)抽象類是帶有純虛函數(shù)的類。
(5)抽象類派生出新類之后,如果派生類沒有給出全部純虛函數(shù)的實(shí)現(xiàn),這時(shí)的派生類仍是一個(gè)抽象類。
(6)純虛函數(shù):virtual 函數(shù)類型 函數(shù)名(參數(shù)表)=0;

總結(jié)

以上是生活随笔為你收集整理的C++中对多态的理解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。