C++中什么是虛函數(shù)
虛函數(shù)是指:在某基類中聲明為virtual并在一個或多個派生類中被重新定義的成員函數(shù),即被virtual關鍵字修飾的成員函數(shù);格式為“virtual 函數(shù)返回類型 函數(shù)名(參數(shù)表) {函數(shù)體}”。
在某基類中聲明為 virtual 并在一個或多個派生類中被重新定義的成員函數(shù),用法格式為:;實現(xiàn)多態(tài)性,通過指向派生類的基類指針或引用,訪問派生類中同名覆蓋成員函數(shù)。
簡單地說,那些被virtual關鍵字修飾的成員函數(shù),就是虛函數(shù)。
首先:強調一個概念定義一個函數(shù)為虛函數(shù),不代表函數(shù)為不被實現(xiàn)的函數(shù)。定義它為虛函數(shù)是為了允許用基類的指針來調用子類的這個函數(shù)。定義一個函數(shù)為純虛函數(shù),才代表函數(shù)沒有被實現(xiàn)。定義純虛函數(shù)是為了實現(xiàn)一個接口,起到一個規(guī)范的作用,規(guī)范繼承這個類的程序員必須實現(xiàn)這個函數(shù)。
class Animal { public: //Speak函數(shù)就是虛函數(shù) //函數(shù)前面加上virtual關鍵字,變成虛函數(shù),那么編譯器在編譯的時候就不能確定函數(shù)調用了。 virtual void speak() { cout << "動物在說話" << endl; } }; class Cat :public Animal { public: void speak() { cout << "小貓在說話" << endl; } }; int main() { Animal* a = new Cat(); // a->speak();//小貓在說話 Animal b = Cat(); b.speak();//動物在說話,不明白這里為什么沒有發(fā)生多態(tài) system("pause"); return 0; }
這個例子是虛函數(shù)的一個典型應用,通過這個例子,也許你就對虛函數(shù)有了一些概念。它虛就虛在所謂“推遲聯(lián)編”或者“動態(tài)聯(lián)編”上,一個類函數(shù)的調用并不是在編譯時刻被確定的,而是在運行時刻被確定的。由于編寫代碼的時候并不能確定被調用的是基類的函數(shù)還是哪個派生類的函數(shù),所以被成為“虛”函數(shù)。 虛函數(shù)只能借助于指針或者引用來達到多態(tài)的效果。
到此這篇關于什么是虛函數(shù)的文章就介紹到這了,更多相關什么是虛函數(shù)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C語言中qsort函數(shù)用法及用冒泡排序實現(xiàn)
qsort函數(shù)是由C語言提供的標準庫函數(shù), 它的實現(xiàn)思想是快速排序。這篇文章主要介紹了C語言中qsort函數(shù)用法及用冒泡排序實現(xiàn)qsort函數(shù)功能,需要的可以參考一下2022-10-10Visual Studio Code上添加小程序自動補全插件的操作方法
這篇文章主要介紹了Visual Studio Code上添加小程序自動補全插件的操作方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04C語言雙向鏈表實現(xiàn)根據(jù)使用頻率安排元素位置的功能實例代碼
這篇文章主要介紹了C語言雙向鏈表實現(xiàn)根據(jù)使用頻率安排元素位置的功能實例代碼的相關資料,需要的朋友可以參考下2017-03-03