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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++中虚函数和纯虚函数定义

發(fā)布時間:2025/4/16 c/c++ 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++中虚函数和纯虚函数定义 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

只有用virtual聲明類的成員函數(shù),使之成為虛函數(shù),不能將類外的普通函數(shù)聲明為虛函數(shù)。因為虛函數(shù)的作用是允許在派生類中對基類的虛函數(shù)重新定義。所以虛函數(shù)只能用于類的繼承層次結構中。

? ? ?一個成員函數(shù)被聲明為虛函數(shù)后,在同一類族中的類就不能再定義一個非virtual的但與該虛函數(shù)具有相同的參數(shù)(包括個數(shù)和類型)和函數(shù)返回值類型的同名函數(shù)。

? ? ? ?根據(jù)什么考慮是否把一個成員函數(shù)聲明為虛函數(shù)?

? ? ? ?① ?看成員函數(shù)所在的類是否會作為基類

? ? ? ?② 看成員函數(shù)在類的繼承后有無可能被更改功能,如果希望更改其功能的,一般應該將它聲明為虛函數(shù)。

? ? ? ?如果成員函數(shù)在類被繼承后功能不需修改,或派生類用不到該函數(shù),則不要把它聲明為虛函數(shù)。不要僅僅考慮到作為基類而把類中的所有成員函數(shù)都聲明為虛函數(shù)。

? ? ? 應考慮對成員函數(shù)的調用是通過對象名還是通過基類指針或引用去訪問,如果是通過基類指針或引用去訪問的,則應當聲明為虛函數(shù)。有時在定義虛函數(shù)時,并不定義其函數(shù)體,即純虛函數(shù)。它的作用只是定義了一個虛函數(shù)名,具體功能留給派生類去添加。

? ? ? 說明:使用虛函數(shù),系統(tǒng)要有一定的空間開銷。當一個類帶有虛函數(shù)時,編譯系統(tǒng)會為該類構造一個虛函數(shù)表(vtbl),它是一個指針數(shù)組,存放每個虛函數(shù)的入口地址。系統(tǒng)在進行動態(tài)關聯(lián)的時間開銷很少,提高了多態(tài)性的效率。

一、虛析構函數(shù)

? ? ? 析構函數(shù)的作用是在對象撤銷之前把類的對象從內存中撤銷。通常系統(tǒng)只會執(zhí)行基類的析構函數(shù),不執(zhí)行派生類的析構函數(shù)。

? ? ? 只需要把基類的析構函數(shù)聲明為虛函數(shù),即虛析構函數(shù),這樣當撤銷基類對象的同時也撤銷派生類的對象,這個過程是動態(tài)關聯(lián)完成的。

? ? ? 如果將基類的析構函數(shù)聲明為虛函數(shù)時,由該基類所派生的所有派生類的析構函數(shù)都自動成為虛函數(shù),即使派生類的析構函數(shù)與基類的析構函數(shù)名字不相同。

? ? ? ?最好把基類的析構函數(shù)聲明為虛函數(shù),這將使所有派生類的析構函數(shù)自動成為虛函數(shù),如果程序中顯式delete運算符刪除一個對象,而操作對象用了指向派生類對象的基類指針,系統(tǒng)會調用相應類的析構函數(shù)。

? ???構造函數(shù)不能聲明為虛函數(shù)。

?

二、純虛函數(shù)

? ? ? ? 有時候,基類中的虛函數(shù)是為了派生類中的使用而聲明定義的,其在基類中沒有任何意義。此類函數(shù)我們叫做純虛函數(shù),不需要寫成空函數(shù)的形式,只需要聲明成:

? ??? virtual 函數(shù)類型 函數(shù)名(形參表列)=0;

? ? ? ?注意:純虛函數(shù)沒有函數(shù)體;

? ? ? 最后面的“=0“并不代表函數(shù)返回值為0,只是形式上的作用,告訴編譯系統(tǒng)”這是純虛函數(shù)”;

? ? ? 這是一個聲明語句,最后應有分號。

? ? ?純虛函數(shù)只有函數(shù)的名字但不具備函數(shù)的功能,不能被調用。在派生類中對此函數(shù)提供定義后,才能具備函數(shù)的功能,可以被調用。

總結

以上是生活随笔為你收集整理的c++中虚函数和纯虚函数定义的全部內容,希望文章能夠幫你解決所遇到的問題。

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