C++中什么是虛函數
虛函數是指:在某基類中聲明為virtual并在一個或多個派生類中被重新定義的成員函數,即被virtual關鍵字修飾的成員函數;格式為“virtual 函數返回類型 函數名(參數表) {函數體}”。
在某基類中聲明為 virtual 并在一個或多個派生類中被重新定義的成員函數,用法格式為:;實現多態(tài)性,通過指向派生類的基類指針或引用,訪問派生類中同名覆蓋成員函數。
簡單地說,那些被virtual關鍵字修飾的成員函數,就是虛函數。
首先:強調一個概念定義一個函數為虛函數,不代表函數為不被實現的函數。定義它為虛函數是為了允許用基類的指針來調用子類的這個函數。定義一個函數為純虛函數,才代表函數沒有被實現。定義純虛函數是為了實現一個接口,起到一個規(guī)范的作用,規(guī)范繼承這個類的程序員必須實現這個函數。
class Animal
{
public:
//Speak函數就是虛函數
//函數前面加上virtual關鍵字,變成虛函數,那么編譯器在編譯的時候就不能確定函數調用了。
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;
}
這個例子是虛函數的一個典型應用,通過這個例子,也許你就對虛函數有了一些概念。它虛就虛在所謂“推遲聯編”或者“動態(tài)聯編”上,一個類函數的調用并不是在編譯時刻被確定的,而是在運行時刻被確定的。由于編寫代碼的時候并不能確定被調用的是基類的函數還是哪個派生類的函數,所以被成為“虛”函數。 虛函數只能借助于指針或者引用來達到多態(tài)的效果。
到此這篇關于什么是虛函數的文章就介紹到這了,更多相關什么是虛函數內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Visual Studio Code上添加小程序自動補全插件的操作方法
這篇文章主要介紹了Visual Studio Code上添加小程序自動補全插件的操作方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04

