中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

淺談c++靜態(tài)綁定、動態(tài)綁定-創(chuàng)新互聯(lián)

多態(tài):指同一個實體同時具有多種形式,即一個名字可以具有多種語義。函數(shù)重載、類模板、函數(shù)模板等都屬于多態(tài)性。通俗來說就是接口的多種不同實現(xiàn)方式。

成都創(chuàng)新互聯(lián)是一家專注于成都做網(wǎng)站、網(wǎng)站設(shè)計與策劃設(shè)計,長春網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:長春等地區(qū)。長春做網(wǎng)站價格咨詢:18982081108

函數(shù)綁定:就是函數(shù)的入口地址同函數(shù)調(diào)用相聯(lián)系的過程。

分為靜態(tài)綁定和動態(tài)綁定。

兩者的區(qū)別:靜態(tài)綁定在程序執(zhí)行前完成,由編譯系統(tǒng)或操作系統(tǒng)裝入程序計算函數(shù)的入口地址;而動態(tài)綁定則在執(zhí)行過程中完成,由程序自身計算函數(shù)的入口地址。

靜態(tài)綁定:在編譯階段決定執(zhí)行哪個同名的被調(diào)用函數(shù)。

//靜態(tài)綁定
#include<iostream>
#include<stdlib.h>
using namespace std;
class student 
{
public:
	void calfee()
	{
		_fee1 = 1000;
	}
	void print()
	{
		cout<<_fee1<<endl;	
	}
protected:
	int _fee1;
};
class Graduate:public student
{
public:
	void calfee()
	{
		_fee1 = 2000;
	}
	void print()
	{
		cout<<_fee1<<endl;	
	}
	

};
void fn(student &x)
{
	x.calfee();
	x.print();
}

int main()
{
	student s1;
	Graduate g1;
	fn(s1);
	fn(g1);
	system("pause");
	return 0;
}

結(jié)果:
1000
1000

動態(tài)綁定:是由編譯系統(tǒng)自動生成的、靜態(tài)或動態(tài)連接的、程序自身激活并執(zhí)行的過程。在編譯階段不能決定執(zhí)行哪個同名被調(diào)用函數(shù),只在執(zhí)行階段才能依據(jù)要處理的對象類型來決定執(zhí)行哪個類的成員函數(shù)。

所以要實現(xiàn)動態(tài)綁定需要用到虛函數(shù),虛函數(shù)是動態(tài)綁定的基礎(chǔ)。

//動態(tài)綁定
#include<iostream>
#include<stdlib.h>
using namespace std;
class student 
{
public:
	virtual void calfee()
	{
		_fee1 = 1000;
	}
	virtual void print()
	{
		cout<<_fee1<<endl;	
	}
protected:
	int _fee1;
};
class Graduate:public student
{
public:
	void calfee()
	{
		_fee1 = 2000;
	}
	void print()
	{
		cout<<_fee1<<endl;	
	}
	

};
void fn(student &x)
{
	x.calfee();
	x.print();
}

int main()
{
	student s1;
	Graduate g1;
	fn(s1);
	fn(g1);
	system("pause");
	return 0;
}
結(jié)果:
1000
2000

下面分析一下虛函數(shù)

虛函數(shù):也是類的一種成員函數(shù),并且不能是靜態(tài)成員函數(shù)。

虛函數(shù)的作用是實現(xiàn)動態(tài)綁定,也就是在程序的運行階段動態(tài)的選擇合適的成員函數(shù)。從而實現(xiàn)多態(tài)性

設(shè)置虛函數(shù)的一寫注意事項:

1、只有類的成員函數(shù)才能聲明為虛函數(shù)。因為虛函數(shù)只適用于有繼承關(guān)系的類對象,所以普通函數(shù)不能聲明為虛函數(shù)。

2、靜態(tài)成員不能是虛函數(shù),因為靜態(tài)成員不受限于某個對象。

3、內(nèi)聯(lián)函數(shù)不能是虛函數(shù),因為內(nèi)聯(lián)函數(shù)不能在運行中歐諾個動態(tài)的確定其位置。即使虛函數(shù)在類的內(nèi)部定義,編譯時仍將其看做是非內(nèi)聯(lián)的。

4、構(gòu)造函數(shù)不能是虛函數(shù),因為構(gòu)造時對象還是一片未定型的空間。只有在構(gòu)造完成后,對象才能成為一個類的名副其實的實例。

5、析構(gòu)函數(shù)可以是虛函數(shù),而且通常聲明為虛函數(shù)。目的在于:使用delete刪除一個對象時,確保析構(gòu)函數(shù)能夠被正確運行。因為設(shè)置虛析構(gòu)函數(shù)后,可以利用動態(tài)綁定方式選擇析構(gòu)函數(shù)。

下面程序演示了析構(gòu)函數(shù)在有些情況下必須設(shè)置為虛函數(shù)

class A
{
public:
	A()
	{
		cout<<"A()"<<endl;
	}
	virtual ~A()
	{
		cout<<"~A()"<<endl;
	}
};
class B:public A
{
private :
	char *_buf;
public:
	B(int i)
	{
		_buf = new char[i];
		cout<<"B()"<<endl;
	}
	virtual ~B()
	{
		delete[] _buf;
		cout<<"~B()"<<endl;
	}
};
void fun(A* pa)
{
	delete pa;
}
int main()
{
	A *pa = new B(10);
	fun(pa);
	system("pause");
	return 0;
}
結(jié)果:
A()
B()
~B()
~A()
如果將~A()不定義為虛函數(shù),則結(jié)果為:~A()

純虛函數(shù):無函數(shù)體的一種特殊的虛函數(shù)。

其聲明的格式為:virtual 類型 函數(shù)名(參數(shù)表)= 0;

抽象類:至少有一個純虛函數(shù)的類。

作用:將有關(guān)類組織在一個繼承層次結(jié)構(gòu)中,由它提供一個公共的根,相關(guān)的子類都是從這個根派生出來的。

抽象類的使用規(guī)定:

1、抽象類只能用作其他類的基類,不能建立抽象類對象。

2、抽象類不能用作參數(shù)類型、函數(shù)返回類型或顯示轉(zhuǎn)換類型

3、可以定義抽象類的指針和引用,此指針可以指向它的派生類,從而實現(xiàn)多態(tài)。

class A //抽象類
{
public:
	A()
	{
		cout<<"A()"<<endl;
	}
	virtual ~A()
	{
		cout<<"~A()"<<endl;
	}
	virtual void fun()=0;
};
class B: public A 
{
	public:
	B()
	{
		cout<<"B()"<<endl;
	}
	virtual ~B()
	{
		cout<<"~B()"<<endl;
	}
	void fun()
	{
		cout<<"B::fun()"<<endl;
	}
};
class C: public A 
{
	public:
	C()
	{
		cout<<"C()"<<endl;
	}
	virtual ~C()
	{
		cout<<"~C()"<<endl;
	}
	void fun()
	{
		cout<<"C::fun()"<<endl;
	}
};
int main()
{
	A *arr[2];
	B b;
	C c;
	arr[0] = &b;
	arr[0]->fun();
	arr[1] = &c;
	arr[1]->fun();
	system("pause");
	return 0;
}

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準確進行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。

網(wǎng)站題目:淺談c++靜態(tài)綁定、動態(tài)綁定-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://www.rwnh.cn/article44/dhhoee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、App開發(fā)、外貿(mào)建站標簽優(yōu)化、做網(wǎng)站、品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
讷河市| 收藏| 高尔夫| 彝良县| 壶关县| 突泉县| 六安市| 霍林郭勒市| 和林格尔县| 乌什县| 抚顺县| 威海市| 尚志市| 延边| 临澧县| 锦州市| 灵宝市| 抚松县| 永济市| 杭州市| 旅游| 怀集县| 临夏县| 博罗县| 开远市| 西峡县| 莱州市| 江门市| 柏乡县| 元朗区| 禹州市| 冷水江市| 平遥县| 普格县| 甘肃省| 临江市| 景洪市| 田阳县| 托克逊县| 陆河县| 兴业县|