freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c知識點(diǎn)總結(jié)(編輯修改稿)

2024-09-03 11:09 本頁面
 

【文章內(nèi)容簡介】 。靜態(tài)聯(lián)編和動態(tài)聯(lián)編 聯(lián)編(binding):是將函數(shù)調(diào)用與相應(yīng)的函數(shù)體代碼彼此關(guān)聯(lián)的過程。 靜態(tài)聯(lián)編(static binding):如果聯(lián)編過程在程序開始運(yùn)行前的編譯階段完成。 例如:重載函數(shù): void fun(int a,int b) void fun(float x,float y) void fun(char c) 函數(shù)名字相同,但各自參數(shù)不同,編譯器能根據(jù)函數(shù)參數(shù)的類型和個(gè)數(shù)自動選擇相應(yīng)的函數(shù)體編譯。動態(tài)聯(lián)編(dynamic binding) 在程序運(yùn)行時(shí)進(jìn)行的聯(lián)編方式。 例如:虛函數(shù) C++中的虛函數(shù),由于其函數(shù)名、返回值、函數(shù)參數(shù)完全相同,但函數(shù)體不同,因此編譯階段無法確定函數(shù)調(diào)用與哪個(gè)函數(shù)體關(guān)聯(lián),只能由系統(tǒng)在程序運(yùn)行時(shí)確定。六:虛函數(shù)虛函數(shù)(virtual function)運(yùn)行時(shí)多態(tài)在定義某一基類(或其派生類)時(shí),若將其中的某一函數(shù)成員的屬性說明為virtual,則稱該函數(shù)為虛函數(shù)。若基類中某函數(shù)被說明為虛函數(shù),則意味著其派生類中也要用到與該函數(shù)同名、同參數(shù)表、同返回類型、但函數(shù)體不同。虛函數(shù)存在繼承環(huán)境中。虛函數(shù)成員的定義語法:virtual 函數(shù)類型 函數(shù)名(形參表){  函數(shù)體}程序舉例 class BaseClass{public:virtual void show() {coutBase classendl。}//如果不加關(guān)鍵字virtual,運(yùn)行的結(jié)果都是Base class;}。class Derived1:public BaseClass{public:void show() {coutDerived class1endl。}}。class Derived2:public BaseClass{public:void show() {coutDerived class2endl。}}。int main(){BaseClass obj。BaseClass *p。Derived1 obj1。Derived2 obj2。p=amp。obj。pshow()。p=amp。obj1。pshow()。p=amp。obj2。pshow()。return 0。}通過虛函數(shù),達(dá)到了用基類指針訪問派生類對象成員函數(shù)的目的,這樣,只要聲明了基類指針,就可以使不同的派生類對象產(chǎn)生不同的函數(shù)調(diào)用,實(shí)現(xiàn)了程序的運(yùn)行時(shí)多態(tài)。運(yùn)行多態(tài)應(yīng)該使用虛函數(shù),并通過指針、引用或者成員函數(shù)調(diào)用虛函數(shù)純虛函數(shù)和抽象類純虛函數(shù)(pure virtual function): 在基類中聲明虛擬函數(shù)而不給出具體的定義,把它的定義放在各個(gè)導(dǎo)出類中,此種函數(shù)為純虛函數(shù) 通過基類指針或引用可以調(diào)用所有派生類的虛函數(shù)。抽象類:(abstract class) 聲明了虛函數(shù)的類,基類只用于繼承,僅作為一個(gè)接口,具體的功能則在派生類中實(shí)現(xiàn)。 注意:從抽象類可以派生出具體的或抽象類,但不能從具體類派生出抽象類。虛基類 虛基類的引入 用于有共同基類的場合 聲明 以virtual修飾說明基類例:class B1:virtual public B 作用 主要用來解決多繼承時(shí)可能發(fā)生的對同一基類繼承多次而產(chǎn)生的二義性問題. 為最遠(yuǎn)的派生類提供唯一的基類成員,而不重復(fù)產(chǎn)生多次拷貝類模板 C++中實(shí)現(xiàn)多態(tài)的另一種方法是類模板 類模板可以使用戶為類定義一種模式,使得類中的一些數(shù)據(jù)成員和成員函數(shù)的參數(shù),以及成員函數(shù)的返回值能夠娶任意類型。include template class T class TestClass { public:T buffer[10]。 //T類型的數(shù)據(jù)成員buffer數(shù)組大小固定為10 (靈活性差!) T getData(int j)。 //獲取T類型buffer(數(shù)組)的第j個(gè)分量 }。template class T T TestClassT::getData(int j) {return *(buffer+j)。 }。 void main() {TestClasschar ClassInstA。 //char取代T,從而實(shí)例化為一個(gè)具體的類 char cArr[6]=abcde。for(int i=0。 i5。 i++)[i]=cArr[i]。for(i=0。 i5。 i++) {char res=(i)。coutres 。}coutendl。 程序執(zhí)行后的顯示結(jié)果如下:a b c d e 既使用類型參數(shù)又使用 普通參數(shù)的類模板示例include include template class T, int i class TestClass {public:T buffer[i]。 //T類型的buffer,其大小隨普通形參i的值變化(靈活性大!)T getData(int j)。 }。template class T, int i T TestClassT,i::getData(int j) {return *(buffer+j)。 }。TestClassdouble, 6 ClassInstF。double fArr[6]={, , , , , }。for(i=0。 i6。 i++)[i]=fArr[i]10。for(i=0。 i6。 i++) {double res=(i)。coutres 。}coutendl。}常量指針與指針常量const放在指針類型前,在程序中不能通過指針來間接修改指針?biāo)赶虻膬?nèi)存空間的值,但可以改變指向的空間int a = 10。const int b = 20。const int* pa = amp。a。const int* pb = amp。b。a = 100。 // okb = 200。 // error*pa = 100。 // error*pb = 200。 // errorpb = amp。a。 // okpa = amp。b。 // okconst放在”*”和指針名之間,不能改地址能改所指向的值。int b =28。int* const pb = amp。b。*pb = 100。 // okpb++。 // error在定義指針常量時(shí),必須將其初始化。const在上述兩個(gè)地方都加。既不允許修改指針值,也不允許修改指針變量所指向的值const int a = 10。const int * const pa = amp。a。內(nèi)存模型描述的是程序中各變量(實(shí)例域、靜態(tài)域和數(shù)組元素)之間的關(guān)系,.首先介紹一下C++中有繼承關(guān)系的類對象內(nèi)存的布局:在C++中,如果類中有虛函數(shù),那么它就會有一個(gè)虛函數(shù)表的指針__vfptr,在類對象最開始的內(nèi)存數(shù)據(jù)中。之后是類中的成員變量的內(nèi)存數(shù)據(jù)。對于子類,最開始的內(nèi)存數(shù)據(jù)記錄著父類對象的拷貝(包括父類虛函數(shù)表指針和成員變量)。之后是子類自己的成員變量數(shù)據(jù)。對于子類的子類,也是同樣的原理。但是無論繼承了多少個(gè)子類,對象中始終只有一個(gè)虛函數(shù)表指針。為了探討C++類對象的內(nèi)存布局,先來寫幾個(gè)類和函數(shù)首先寫一個(gè)基類: 1. class Base 2. { 3. public: 4. virtual void f() { cout Base::f endl。 } 5. virtual void g() { cout Base::g endl。 } 6. virtual void h() { cout Base::h endl。 } 7. int base。 8. protected: 9. private: 10. }。 然后,我們多種不同的繼承情況來研究子類的內(nèi)存對象結(jié)構(gòu)。1. 無虛函數(shù)集繼承 1. //子類1,無虛函數(shù)重載 2. class Child1 : public Base 3. { 4. public: 5. virtual void f1() { cout Child1::f1 endl。 } 6. virtual void g1() { cout Child1::g1 endl。 } 7. virtual void h1() { cout Child1::h1 endl。 } 8. int child1。 9. protected: 10. private: 11. }。
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1