已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第一章1. 動態(tài)分配內(nèi)存使用new關鍵字:1)為一個對象分配內(nèi)存:指針名 = new 類型名;2)為一個對象數(shù)組分配內(nèi)存:指針名 = new 類型名長度; 使用delete關鍵字:1)釋放對象占用內(nèi)存:delete 指針名;2)釋放一個對象數(shù)組占用內(nèi)存:delete 指針名。注意:new和delete必須成對出現(xiàn),且delete釋放一個對象時,會調(diào)用析構函數(shù)。2. 引用數(shù)據(jù)類型 &別名 = 對象名例如:int a = 56; int &b = a ;則b是對a的引用3. 什么是左值和右值?左值:必須是能被計算和修改的。右值:右值表達式的值必須是固定的。4. 指向常量的指針指向常量的指針一般形式:const int *p注意:*p不能作為左值。5. 常量指針常量指針一般形式: int * const p注意:*p不能作為左值。6. 指向常量的常量指針常量指針一般形式:const int * const p注意:*p不能作為左值。7. 泛型算法應用于普通數(shù)組對數(shù)組進行升冪排序,反轉(zhuǎn)數(shù)組內(nèi)容,復制數(shù)組等要包含頭文件包對數(shù)組進行降冪排序和檢索要包含頭文件包(1) 反轉(zhuǎn)數(shù)組內(nèi)容:reverse(a , a+數(shù)組長度)(2) 復制數(shù)組內(nèi)容 : copy(a,a + 數(shù)組長度,b)(3) reverse_copy(a ,a +數(shù)組長度 ,b);reverse_copy是將數(shù)組的內(nèi)容從尾到頭的逆向復制(4) 數(shù)組升冪排序:sort(a , a+數(shù)組長度)(5) 數(shù)組降冪排序 : sort(b , b+ 數(shù)組長度 , greater()(6) 查找數(shù)組內(nèi)容 : find(a , a+數(shù)組長度 ,value)(7) 數(shù)組內(nèi)容的輸出:copy(a , a+ len ,ostream_iterator(cout,字符串);注意:可將ostream_iyerator理解為輸出流控制符,表示數(shù)組元素的數(shù)據(jù)類型字符串是數(shù)組元素間的間隔。8. 數(shù)據(jù)的簡單輸入輸出C+提高了兩種格式控制方式:一種是使用ios_base類提供的接口;另一種是稱為操控符的特殊函數(shù),它的特點是可以直接包含在輸出和輸入表達式中,因此更加方便。不帶參數(shù)操控符定義在頭文件中,帶形式的定義在頭文件中三是無參數(shù)的操控符函數(shù)不能帶有()名稱含義作用Dec設置轉(zhuǎn)換基數(shù)為十進制輸入/輸出oct設置轉(zhuǎn)換基數(shù)為八進制輸入/輸出Hex設置轉(zhuǎn)換基數(shù)轉(zhuǎn)換為十六進制輸入/輸出Endl輸出一個換行符輸出Resetiosflags(long flags)清除flag標志位輸出Setiosflags(long flags)清除flag標志位輸出Setfill(char ch)設置ch為填充字符輸出Setprecision(int n)設置浮點數(shù)輸出精度輸出Setw(int width)設置輸出字符間字段寬度輸出常量及其含義常量名含義Ios_base : left輸出域左對齊Ios_base :right輸出域右對齊Ios_base :showpoint浮點數(shù)輸出必須帶一個小數(shù)點Ios_base :showpos在正數(shù)前面加+Ios_base :scientific使用科學計數(shù)法表示浮點數(shù)Ios_base :fixed使用定點形式表示浮點數(shù)第二章1. string 對象(1) string對象包含于#include頭文件包中(2) 計算字符串長度的函數(shù):size(),使用方法是 字符串.size()(3) 返回字符串子串的函數(shù):substr(起始位置,結束位置)注意:給出的起始位置必須位于字符串中,否則出錯。如果結束位置大于字符串的長度,則自動截取到字符串尾部。(4) 字符串查找函數(shù):find(要查找字符串,開始查找的位置)(5) String類有一對用來指示其元素位置在的基本函數(shù)成員:begin()和end(),Begin()指示第一個元素,end()指示最后一個元素之后。如果begin()不等于end(),則算法首先作用于begin()所指元素,然后指向下一個元素,知道begin()等于end()。所以元素存在于半開區(qū)間begin,end)中。(6)char定義的字符串使用“0”作為結束標記。String不是。2. 使用complex對象(1)這個對象包含于頭文件#include中 。使用方法:complex 對象名(實部值,虛部值)Complex使用成員函數(shù)real()和imag()函數(shù)輸出實部和虛部值(2) string類型的數(shù)組的swap()成員函數(shù)可以交換連個數(shù)組分量。第三章1. 函數(shù)的參數(shù)及其傳遞方式(1) 對象作為函數(shù)參數(shù):將對象名作為函數(shù)參數(shù),這種傳遞是單向的,不會改變實參的值。(2) 對象指針作為函數(shù)參數(shù):將對象地址作為函數(shù)參數(shù),這種傳遞會改變實參的值。(3) 引用作為函數(shù)參數(shù):定義時,形參是別名;調(diào)用時,實參是對象名。實參對象和形參對象代表同一個對象,所以改變形參對象就是改變實參對象。2. 使用const保護數(shù)據(jù):使用const修飾符傳遞參數(shù),只能使用參數(shù)而無權修改參數(shù)。這樣能提高系統(tǒng)安全。3. 函數(shù)返回值(1) 函數(shù)可以返回一個引用,返回一個引用的主要目的是為了將該函數(shù)用在賦值運算符的左邊。函數(shù)原型表示方法:數(shù)據(jù)類型 &函數(shù)名(參數(shù)列表)(2) 返回指針函數(shù):返回值是存儲了某種類型數(shù)據(jù)的內(nèi)存地址,這種 函數(shù)稱為指針函數(shù)。聲明函數(shù)原型表示方法:類型標示符 *函數(shù)名(參數(shù)列表)注意:當函數(shù)返回一個空指針值是,這個可以作為程序異常的標志。(3) 返回對象:函數(shù)返回string等對象。(4) 函數(shù)返回值作為函數(shù)參數(shù):如果把函數(shù)返回值作為另一個函數(shù)的參數(shù),這個函數(shù)的返回值必須和參數(shù)類型一致。4. 內(nèi)聯(lián)函數(shù)內(nèi)聯(lián)函數(shù)的聲明只要在函數(shù)前加上關鍵字“inline”即可。內(nèi)聯(lián)函數(shù)必須在函數(shù)第一次被調(diào)用前出現(xiàn)并定義。5. 函數(shù)的重載和默認參數(shù)函數(shù)重載指函數(shù)名相同,但輸入?yún)?shù)類型不同或個數(shù)不同。默認參數(shù)一般在參數(shù)列表中給出,int add(int m1 = 0,int m2 = 0)。6. 函數(shù)模板在函數(shù)定義時加上Template 或Template 。實際調(diào)用時可以不指出T的數(shù)據(jù)類型,也可顯式指出。第四章1. 定義類(1) 聲明類:class 類名Private:私有數(shù)據(jù)和函數(shù)Public:共有數(shù)據(jù)和函數(shù)Protected:保護數(shù)據(jù)和函數(shù);注意:花括號后面的分號必不可少(2) 類外定義成員函數(shù)一般形式:返回類型 類名 :成員函數(shù) (參數(shù)列表)成員函數(shù)的函數(shù)體注意:“:”是作用域運算符,其意思表面其后的成員函數(shù)時屬于這個特定的類。(3) 數(shù)據(jù)成員的賦值注意:不能在定義數(shù)據(jù)成員的同時進行賦值,這種做法是錯誤的。2. 使用類的對象(1) 類不僅可以聲明對象,還可以聲明對象的引用和對象的指針,其語法與基本數(shù)據(jù)類型一樣。(2) 定義類對象的指針語法:類名 * 對象指針名;(3) 數(shù)據(jù)封裝這些內(nèi)存塊中不僅存儲數(shù)據(jù),也存儲代碼,這有利于數(shù)據(jù)和功能安全。同時這些內(nèi)存塊的結構可被用作樣板產(chǎn)生跟多對象。3. 構造函數(shù)(1) 為了使對象的狀態(tài)確定,必須對其進行正確的初始化。初始化的操作和賦值操作是不同的。(2) 默認構造函數(shù):類名 :類名()注意:默認構造函數(shù)是系統(tǒng)自動產(chǎn)生的,當用戶定義了自己的構造函數(shù)系統(tǒng)就不在提供默認構造函數(shù)。(3) 定義構造函數(shù):構造函數(shù)的名字和類名相同,并且定義構造函數(shù)的時候不能有返回值類型,即使是void也不可以。(4) 類可有多個函數(shù),在類體的聲明形式如下:類名(形參1,形參2,形參3.形參n);在程序中說明一個對象時,程序自動調(diào)用構造函數(shù)來初始化對象,使程序為對象自動化分配內(nèi)存。(5) 程序員不能在程序中顯示的調(diào)用構造函數(shù),構造函數(shù)是自動調(diào)用的。(6) 構造函數(shù)和運算符new:運算符new用于建立生存期可控的對象,new返回這個對象的指針,因此使用new建立動態(tài)對象的語法和建立動態(tài)變量的情況類似,其不同點是new和構造函數(shù)一同起作用。(7) 當使用new建立一個動態(tài)對象,new首先分配足夠?qū)ο蟮膬?nèi)存,然后自動構造函數(shù)來初始化這塊內(nèi)存,再返回這個動態(tài)對象的地址。(8) 構造函數(shù)的默認參數(shù):如果程序定義自己的有參構造函數(shù),又想使用無參數(shù)形式的構造函數(shù),那么就是吧構造函數(shù)使用默認參數(shù)設計。(9) 復制構造函數(shù):引用在類中一個很重要的用途是用在復制構造函數(shù)中。這一類特殊而且重要的函數(shù)通常用于使自己已有的對象來建立一個新對象。復制構造函數(shù)原型如下:類名:類名(const 類名 &)4.析構函數(shù)(1)析構函數(shù)析構函數(shù)的名稱和類名一樣,為了與構造函數(shù)區(qū)分在析構函數(shù)前面加符號。析構函數(shù)不能定義任何返回類型,即使指定為void也不行。一般形式如下:類名:類名(void)(2)析構函數(shù)在對象的生存期結束時被主動調(diào)用。類得對象數(shù)組的每個元素調(diào)用一次構造函數(shù)。(3)析構函數(shù)和運算符delete:當使用delete刪除一個動態(tài)對象時,它首先為這個動態(tài)對象調(diào)用析構函數(shù),然后再釋放這個動態(tài)對象占用的內(nèi)存。這和使用new建立動態(tài)對象的過程剛好相反。5.成員函數(shù)重載及默認函數(shù)(1)this指針:c+規(guī)定當一個成員函數(shù)被調(diào)用時,系統(tǒng)自動向它傳遞一個隱含的參數(shù),該參數(shù)是一個指向調(diào)用該函數(shù)的指針,從而使成員函數(shù)知道該對那個對象進行操作。(2)this指針是c+實現(xiàn)封裝的一種機制,它將該對象調(diào)用的成員函數(shù)連接在一起,在外部看來,每一個對象都擁有自己的成員函數(shù)。一般情況下都省略符號“this-”,而讓系統(tǒng)進行默認設置。6.一個類的對象作為另一個類的成員(1)類本身就是一種新的數(shù)據(jù)類型,所以一個類可以作為另一個類得成員。7.類和對象的性質(zhì)(1)對象的性質(zhì):同一類的對象之間可以相互賦值,可以使用對象數(shù)組,可以使用指向?qū)ο蟮闹羔?,使用取址運算符&講一個對象的地址置于該指針中。對象之間賦值:Point A,B; A.Set(25,25); B = A數(shù)組對象:Point A3使用指針和取址運算符:point *P = &A P-Display();(2) 對象可以作為函數(shù)參數(shù),如果參數(shù)傳遞采用傳對象值的方式,在被調(diào)用函數(shù)中對形參所作的改變不影響調(diào)用函數(shù)中作為實參的對象。如果傳得是對象的引用(地址)當參數(shù)對象被修改時,相應的實參對象也會被修改。C+建議使用引用,在前面加上const這樣可以避免修改原來的數(shù)據(jù)成員。(3) 對象作為函數(shù)參數(shù)時,可以使用對象,對象引用,和對象指針。形式為:Void print(Point a)a.Display;/對象作為參數(shù)Void print(Point &a)a.Display;/對象引用作為參數(shù)Void print(Point *p)p-Display;/對象指針作為參數(shù)(4) 一個對象可以作為另一個類得成員。8. 類的性質(zhì)(1) 類本身的成員函數(shù)可以使用類所以的成員(2) 類得對象只能訪問公有成員函數(shù),例如輸出x只能使用A.Getx(),不能使用A.x(3) 其他函數(shù)不能使用類的私有成員,也不能使用類得公有成員函數(shù),他們只能通過類的對象使用類得公有成員函數(shù)。(4) 雖然一個類可以包含另一個類的對象,但是這個類也只能通過它被包含的這個類得對象使用那個類的成員函數(shù),通過成員函數(shù)使用數(shù)據(jù)成員,例如:Loc.Set(x,y)(5) 不完全類得聲明:只要當使用類產(chǎn)生對象時,才進行內(nèi)存分配,這種對象的建立過程稱為實例化。(6) 有時候?qū)㈩愖鳛橐粋€整體使用而不存取取成員。(7) 不完全類的定義沒有類體。不完全類聲明的類不能實例化(8) 類也可以是空的,不包含任何內(nèi)容。(9) 類中的一個成員名可以使用類名和作用域運算符來顯示的指定,這稱為成員名限定。例如:void MyClass:set(int i)MyClass:number = i/顯示的指定訪問MyClass類中的標示符number9. 對象,類和消息(1) 接收對象名,調(diào)用操作名和必要的參數(shù)是對象傳達消息的一般組成部分。第五章1. 對象成員的初始化(1) 可以在一個類中說明具有某個類的類型的數(shù)據(jù)成員,在A類中說明對象成員的一般形式如下:Class A類名1 成員名1;類名2 成員名2;。類名n 成員名n;A類得構造函數(shù)的形式如下:A:A(參數(shù)表0):成員1(參數(shù)表1),成員2(參數(shù)列表2),成員3(成員列表3)其他操作。(2) 靜態(tài)成員:簡單成員函數(shù)是指聲明中不含const ,volatile ,static關鍵字的函數(shù),如果類得數(shù)據(jù)成員或成員函數(shù)使用關鍵字static進行修飾,這樣的成員稱為靜態(tài)成員或靜態(tài)成員函數(shù),統(tǒng)稱為靜態(tài)成員。(3) 靜態(tài)數(shù)據(jù)成員只能說明一次如果在類中僅對靜態(tài)數(shù)據(jù)成員進行聲明,則必須在文件作用域的某個地方進行定義。在進行初始化時,必須進行成員名限定。例如:int Test : x = 25也可以直接在構造函數(shù)中使用類成員限定符對其進行初始化。例如:Test(int a,int b)Test:x = a; n = b(4) 除靜態(tài)數(shù)據(jù)成員的初始化之外,靜態(tài)成員遵循類得其他成員所遵循的訪問限制,雖然還沒有建立對象,但是靜態(tài)成員已經(jīng)存在。(5) Static不是函數(shù)類型中的一部分,所以在類聲明之外定義靜態(tài)成員函數(shù)時,不使用static。在類中定義的靜態(tài)成員函數(shù)時內(nèi)聯(lián)的。(6) 類的任何成員函數(shù)都可以訪問靜態(tài)成員。因為靜態(tài)成員函數(shù)沒有this指針,所以靜態(tài)成員函數(shù)只能通過對象名(或指向?qū)ο蟮闹羔槪┰L問該對象的非靜態(tài)成員。2. 友元函數(shù)(1) 友元函數(shù)可以存取私有成員,公有成員和保護成員。其實友元函數(shù)可以是一個類或函數(shù),尚未定義的類也可以作為友元。(2) 友元函數(shù)在類中聲明,但是他并不屬于類得成員函數(shù),所以可以在類得外面想普通函數(shù)一樣定義這個函數(shù)。(3) 將成員函數(shù)作為友元:一個類得成員函數(shù)(包括構造函數(shù)和析構函數(shù))可以通過使用friend說明為另一個類非友元。(4) 將一個類說明為另一個類的友元:可以講一個類說明為另一個類得友元,這時整個類得成員函數(shù)均具有友元函數(shù)的性能。聲明形式為:friend class 類名;3. Const對象(1) 可以造類中使用const關鍵字定義數(shù)據(jù)成員和成員函數(shù)或修飾一個對象。一個const對象只能訪問const成員函數(shù)。(2) 常量成員:常量成員包括常量數(shù)據(jù)成員,靜態(tài)常數(shù)據(jù)成員和常引用。靜態(tài)常數(shù)據(jù)成員仍保留靜態(tài)成員函數(shù),需要在類外初始化。常數(shù)據(jù)成員和常引用只能通過初始化列表來獲得初值。(3) 常引用作為函數(shù)參數(shù):使用引用作為函數(shù)參數(shù),傳得是地址。有時希望將參數(shù)的值傳遞給函數(shù)使用,并不允許函數(shù)改變對象的值,這是可以使用常引用作為參數(shù)。例如:void Display(const double &r)/這樣不會破壞實參(4) 常對象:在 對象名前使用const聲明常對象,但是聲明時必須同時進行初始化,而且不能被更新。語法:類名 const 對象名(參數(shù)表);/必須進行初始化(5) 常成員函數(shù):可以聲明一個成員函數(shù)為const函數(shù)。一個const對象可以調(diào)用const函數(shù),但不能調(diào)用非const成員函數(shù)。Const放在函數(shù)聲明之前意味著返回值是常量,但是這不符合語法,必須將關鍵字const放在參數(shù)表之后,才能說明該函數(shù)是一個const成員函數(shù)。聲明常成員函數(shù)的格式如下:類型標示符 函數(shù)名 (參數(shù)列表)const;為了保證不僅聲明const成員函數(shù),而且確實也定義為const函數(shù),程序員在定義函數(shù)時必須重申const聲明。定義格式如下:類型標示符 類名:函數(shù)名(參數(shù)列表) const函數(shù)體const位于函數(shù)參數(shù)表之后,函數(shù)體之前。也可用內(nèi)聯(lián)函數(shù)定義const函數(shù)格式如下:類型標示符 函數(shù)名(參數(shù)列表)const函數(shù)體注意:在定義成員函數(shù)時,函數(shù)體之前加上const可以防止覆蓋函數(shù)改變數(shù)據(jù)成員值。4.指向類成員函數(shù)的指針(1)對象是一個完整的實體,c+包含了指向類成員的指針來封裝這一對象??梢杂弥羔樂段膬?nèi)存中給定類型的任何對象,指向類成員的指針則用來訪問某個特定類的對象中給定類型的任何成員。第六章1. 繼承(1) 單一繼承的一般形式:class 派生類名:訪問控制 基類名Private:成員聲明列表Protected:成員聲明列表Public:成員聲明列表(2) 派生類的構造函數(shù)和析構函數(shù):定義派生類的構造函數(shù):派生類名:派生類名(參數(shù)表0):基類名(參數(shù)表)函數(shù)體;注意:構造函數(shù)(包括析構函數(shù))是不被繼承的,所以一個派生類只能調(diào)用他的直接基類的構造函數(shù)。當定義派生類的一個對象時,首先調(diào)用基類的構造函數(shù),對基類成員進行初始化,然后執(zhí)行派生類的構造函數(shù),如果某個基類仍是一個派生類,則這個過程遞歸進行。(3) 派生類的聲明關鍵字protected之后聲明的是類的保護成員,保護成員具有私有成員和公有成員的雙重角色:對派生類得成員函數(shù)而言,它是公有成員,可以被訪問;而對其他成員函數(shù)而言則仍是私有成員,不能被訪問。(4) 訪問權限和賦值兼容規(guī)則:繼承類和基類成員的訪問性保持一樣。(5) 派生的對象可以賦給基類的對象,派生類的對象可以初始化基類的引用,派生類的對象的地址可以賦給指向基類的指針。注意:靜態(tài)成員被繼承,繼承類和基類共享同一個靜態(tài)變量。(6) ias和has-a的區(qū)別:(7) 公有繼承存取權限表基類point的成員Rectangle的成員函數(shù)對point的訪問基類對象a派生類對象r1外部函數(shù)Private成員不可訪問不可訪問不可訪問Protected成員protected不可訪問不可訪問Public成員public可訪問可訪問2.私有派生(1)通過私有派生,基類的私有和不可訪問成員在派生類中是不可訪問的,而公有和保護成員這時就成了派生類的私有成員,派生類的對象不能訪問繼承的基類成員,必須定義公有的成員函數(shù)作為接口。注意:雖然派生類的成員函數(shù)可通過自定義的函數(shù)訪問基類的成員,但將該派生類作為基類再繼續(xù)派生時,這時即可使用公有派生,原基類公有成員在新的派生類中也將是不可訪問的。(2) 保護派生也可使用protected,這種派生都使原來的訪問權限降一個級別。(3) 多重繼承:形式:class 類名1:訪問控制 類名2,訪問控制類名3,訪問控制類名n定義派生類自己的成員;3. 作用域分辨符合成員名操作符(1) 作用域分辨操作的一般形式如下:類名:標示符”類名“可以是任一類和派生類名,“類標示符”是該類中生命的任一成員。(2) 派生類支配基類的同名函數(shù)基類的成員和派生類新增的成員都有類作用域,基類再外層,派生類在內(nèi)層。如果派生類定義類一個和基類成員函數(shù)同名的新成員函數(shù)(因為參數(shù)不同屬于重載,所以這里是指具有相同參數(shù)表的成員函數(shù)),派生類的新成員函數(shù)就覆蓋了外層的同名成員函數(shù)。在這種情況下,直接使用成員名只能訪問派生類的成員函數(shù),只要使用作用域分辨,才能訪問基類的同名成員函數(shù)。(3) 由于二義性,一個類不能從同一個類中直接繼承最多一次。注意:如果必須這樣,可以使用一個中間類。二義性檢查是在訪問權限檢查之前進行的。因此,成員的訪問權限不能解決二義性問題.那么如何解決二義性問題,使用作用域分辨符進行存取。第七章1. 類模板(1) 將一些數(shù)據(jù)類型從類中分離出來形成的一個通用的數(shù)據(jù)類型T,并為這個數(shù)據(jù)類型T設計一個操作集,在編譯器編譯時與特定的類型聯(lián)系起來。T不是類,天擦很難過稱之為類模板。(2) 類模板的成分及語法:class在這里是“任意內(nèi)部類型或用戶定義類型”,T可能是任意結構或類。類模板的一般聲明形式:template class 類名類體;(3) 類模板的對象:類名 對象名(構造函數(shù)實參列表);類名 對象名;、默認或者無參構造函數(shù)(4) 在類體外面定義成員函數(shù)時,必須用template重寫類模板聲明。一般形式如下:template 返回類型 類名:成員函數(shù)名(函數(shù)參數(shù)列表)/函數(shù)體(5) 是指template的內(nèi)使用class(或typename)聲明的參數(shù),構造函數(shù)和析構函數(shù)沒有返回類型。(6) 類模板的派生和繼承:類模板也可以繼承,繼承的方法與普通的類一樣。聲明模板繼承之前,必須重新聲明類模板。模板類的基類和派生類很復雜。2. 向量與泛型算法(1) 在數(shù)組生存期內(nèi),數(shù)組的大小事不會改變的。向量是一位數(shù)組的類版本,它與數(shù)組相似,其中的元素項是連續(xù)存儲的,它他和數(shù)組的不同的是:向量中存儲元素的多少可以在運行中根據(jù)需要動態(tài)地增長和縮小。向量是類模板,具有成員函數(shù)。(2) 定義向量列表:向量(vector)類模板的定義在圖文件vector中,他定義四種構造函數(shù),用來定義由各元素組成列表:length表示長度,type表示數(shù)據(jù)類型,name表示對象名,定義列表如下:Vectorname;/定義type的向量表Vectorname(length);/定義具有l(wèi)ength哥type的向量,元素初始化為0Vectorname(length a);/定義具有l(wèi)ength個type的向量元素初始化為aVectorname1(name);/使用已定義的向量name定義name1(3) 不能使用列表初始化向量,但可以先初始化一個數(shù)組,然后把數(shù)組的內(nèi)容復制給向量。例如:int IA10 = 1,98,1,20,152,20,48,10,14,30;VectorVB(IA,IA+10)IA是數(shù)組名,代表數(shù)組的起始地址。IA+10是VB的結束標志位,因為向量自動產(chǎn)生 一個結束標志。(4) 泛型指針:向量具有指示第一個元素的標記begin和指示結束的標記end所指元素。當元素部位空是,算法首先會作用于begin所指元素,并將begin前進一個位置。(5) 在向量中,泛型指針是在底層指針的行為之上提供一層抽象化機制,取代程序原來的“指針直接操作方式”。假設用T表示向量的參數(shù)化數(shù)據(jù)類型,iterator在STL里面是一種通用的指針,它在向量中的作用相當于T*.用 iterator什么向量的一般形式:Vector:reverse_iterator 指針名;逆向向量泛型指針使用reverseiterator,聲明方法如下:Vector:reverse_iterator 指針名(6) 使用typedef可以使聲明或定義泛型的手續(xù)簡單易懂,例如下面泛型指針P:iterator p;(7) 向量的數(shù)據(jù)類型向量除了可以使用基本數(shù)據(jù)類型之外,還可以使用構造類型,只要符合構成法則即可。3.向量最基本的操作方法(1)訪問向量容量的方法:Size():向量中當前已經(jīng)存放的對象個數(shù)。Max_Size():返回向量中可以容納最多對象的個數(shù),一般式尋址空間所容納的對象的個數(shù)。Capacity():返回無需再次分配內(nèi)存就能容納的對象個數(shù)。他的初始值就是程序員最開始申請的元素個數(shù)。它在原來的基礎上自動翻倍擴充空間。Max_size = capacity() = size()(2) 訪問向量中對象的方法Front():返回向量中第一個對象Back():返回想了中的最后一個對象Operator(size_type,n):返回向量中第n+1個對象(3) 在向量中插入對象的方法Push_back(const T&):向向量尾部插入一個對象Insert(iterator it,const T&):想it所指的向量位置前插入一個對象Insert(iterator it,size_type n,const T&X):想it所指向量位置前插入n哥值為X的對象。(4) 在向量中刪除對象的方法Pop_back(const T&):刪除向量中最后一個對象。Erase(iterator it):刪除it所指向的容器對象。Clear()了刪除向量中所有的對象,empty()返回true值。第八章一: 動態(tài)聯(lián)編中的復制兼容性及名字支配規(guī)律(1) 對象的內(nèi)存地址空間中只包含數(shù)據(jù)成員,并不存儲有關成員函數(shù)的信息。這些成員函數(shù)的地址翻譯過程與其對象的內(nèi)存地址無關。(2) 聲明的基類指針只能指向基類,派生類只能指向派生類他們的原始類型決定他們只能調(diào)用各自的同名函數(shù)。除非派生類沒有基類的同名函數(shù)。二:動態(tài)聯(lián)編的多態(tài)性(1) 使用關鍵字virtual聲明的函數(shù),將這種函數(shù)稱為虛函數(shù)。當編譯系統(tǒng)含有虛函數(shù)時,將為他建立一個虛函數(shù)表,表中的每一個元素都指向一個虛函數(shù)表的指針。此外,編譯系統(tǒng)也為類增加一個數(shù)據(jù)成員,這個數(shù)據(jù)成員是一個指向該虛函數(shù)表的指針,通常稱為vptr。(2) 派生類嫩繼承基類的虛函數(shù)表,而且只要是和基類同名(參數(shù)也相同)的成員函數(shù),無論是否使用virtual聲明,他們搜自動成為虛函數(shù)。如果繼承類沒有改寫繼承基類的虛函數(shù),則函數(shù)指針調(diào)用基類的虛函數(shù)。如果派生類改寫了基類的虛函數(shù),編譯系統(tǒng)將重新為派生類的虛函數(shù)建立地址,函數(shù)指針會調(diào)用該寫過的虛函數(shù)。(3) 一旦基類定義了虛函數(shù),該基類的派生類中的同名函數(shù)也自動稱為虛函數(shù)。三:虛函數(shù)實現(xiàn)多態(tài)的條件(1) 官架子virtual指示c+編譯器對調(diào)用虛函數(shù)進行動態(tài)連編。這種多態(tài)性是程序運行到需要的語句出才動態(tài)確定的,所以稱為運行時的多態(tài)性。不過使用虛函數(shù)并不一定產(chǎn)生
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個人商鋪租賃合同(含裝修補償條款)3篇
- 二零二五年度建筑塔吊租賃及勞務分包施工合同
- 2025民法典合同編修訂版修訂咨詢合同3篇
- 2025年度個人擔保業(yè)務合同模板2篇
- 二零二五年度文化旅游項目派遣員工勞動合同及文化交流協(xié)議4篇
- 養(yǎng)老院物業(yè)管理勞務合同范本(二零二五年度)3篇
- 2025年度美食城檔口租賃合同參考范本3篇
- 2025年度個人獨資企業(yè)股權轉(zhuǎn)讓合同范本與法律風險分析3篇
- 二零二五年度木工班組職業(yè)健康與安全協(xié)議合同3篇
- 2025年度農(nóng)業(yè)設施搭棚種植技術服務合同3篇
- 肺炎臨床路徑
- 外科手術鋪巾順序
- 創(chuàng)新者的窘境讀書課件
- 綜合素質(zhì)提升培訓全面提升個人綜合素質(zhì)
- 如何克服高中生的社交恐懼癥
- 聚焦任務的學習設計作業(yè)改革新視角
- 移動商務內(nèi)容運營(吳洪貴)任務三 APP的品牌建立與價值提供
- 電子競技范文10篇
- 食堂服務質(zhì)量控制方案與保障措施
- VI設計輔助圖形設計(2022版)
- 眼科學??己喆痤}
評論
0/150
提交評論