欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++中什么是虛函數(shù)

 更新時(shí)間:2025年01月27日 09:44:46   作者:思wu邪  
虛函數(shù)是C++中的一種機(jī)制,允許在基類中聲明一個(gè)函數(shù),并在派生類中對(duì)其進(jìn)行重新定義,從而實(shí)現(xiàn)多態(tài)性,虛函數(shù)通過基類指針或引用調(diào)用派生類的函數(shù),實(shí)現(xiàn)運(yùn)行時(shí)綁定,虛函數(shù)的關(guān)鍵是使用`virtual`關(guān)鍵字修飾函數(shù)聲明,并且虛函數(shù)可以有默認(rèn)實(shí)現(xiàn),也可以是純虛函數(shù)

虛函數(shù)是指:在某基類中聲明為virtual并在一個(gè)或多個(gè)派生類中被重新定義的成員函數(shù),即被virtual關(guān)鍵字修飾的成員函數(shù);格式為“virtual 函數(shù)返回類型 函數(shù)名(參數(shù)表) {函數(shù)體}”。
在某基類中聲明為 virtual 并在一個(gè)或多個(gè)派生類中被重新定義的成員函數(shù),用法格式為:;實(shí)現(xiàn)多態(tài)性,通過指向派生類的基類指針或引用,訪問派生類中同名覆蓋成員函數(shù)。

簡(jiǎn)單地說,那些被virtual關(guān)鍵字修飾的成員函數(shù),就是虛函數(shù)。

首先:強(qiáng)調(diào)一個(gè)概念定義一個(gè)函數(shù)為虛函數(shù),不代表函數(shù)為不被實(shí)現(xiàn)的函數(shù)。定義它為虛函數(shù)是為了允許用基類的指針來調(diào)用子類的這個(gè)函數(shù)。定義一個(gè)函數(shù)為純虛函數(shù),才代表函數(shù)沒有被實(shí)現(xiàn)。定義純虛函數(shù)是為了實(shí)現(xiàn)一個(gè)接口,起到一個(gè)規(guī)范的作用,規(guī)范繼承這個(gè)類的程序員必須實(shí)現(xiàn)這個(gè)函數(shù)。

class Animal
{
public:
	//Speak函數(shù)就是虛函數(shù)
	//函數(shù)前面加上virtual關(guān)鍵字,變成虛函數(shù),那么編譯器在編譯的時(shí)候就不能確定函數(shù)調(diào)用了。
	virtual void speak()
	{
		cout << "動(dòng)物在說話" << endl;
	}
};

class Cat :public Animal
{
public:
	void speak()
	{
		cout << "小貓?jiān)谡f話" << endl;
	}
};

int main() {
	Animal* a = new Cat(); //
	a->speak();//小貓?jiān)谡f話
	Animal b = Cat();
	b.speak();//動(dòng)物在說話,不明白這里為什么沒有發(fā)生多態(tài)
	system("pause");
	return 0;
}

這個(gè)例子是虛函數(shù)的一個(gè)典型應(yīng)用,通過這個(gè)例子,也許你就對(duì)虛函數(shù)有了一些概念。它虛就虛在所謂“推遲聯(lián)編”或者“動(dòng)態(tài)聯(lián)編”上,一個(gè)類函數(shù)的調(diào)用并不是在編譯時(shí)刻被確定的,而是在運(yùn)行時(shí)刻被確定的。由于編寫代碼的時(shí)候并不能確定被調(diào)用的是基類的函數(shù)還是哪個(gè)派生類的函數(shù),所以被成為“虛”函數(shù)。 虛函數(shù)只能借助于指針或者引用來達(dá)到多態(tài)的效果。

到此這篇關(guān)于什么是虛函數(shù)的文章就介紹到這了,更多相關(guān)什么是虛函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論