自考c++知識(shí)點(diǎn)總結(jié).doc_第1頁
自考c++知識(shí)點(diǎn)總結(jié).doc_第2頁
自考c++知識(shí)點(diǎn)總結(jié).doc_第3頁
自考c++知識(shí)點(diǎn)總結(jié).doc_第4頁
自考c++知識(shí)點(diǎn)總結(jié).doc_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第一章1. 動(dòng)態(tài)分配內(nèi)存使用new關(guān)鍵字:1)為一個(gè)對(duì)象分配內(nèi)存:指針名 = new 類型名;2)為一個(gè)對(duì)象數(shù)組分配內(nèi)存:指針名 = new 類型名長(zhǎng)度; 使用delete關(guān)鍵字:1)釋放對(duì)象占用內(nèi)存:delete 指針名;2)釋放一個(gè)對(duì)象數(shù)組占用內(nèi)存:delete 指針名。注意:new和delete必須成對(duì)出現(xiàn),且delete釋放一個(gè)對(duì)象時(shí),會(huì)調(diào)用析構(gòu)函數(shù)。2. 引用數(shù)據(jù)類型 &別名 = 對(duì)象名例如:int a = 56; int &b = a ;則b是對(duì)a的引用3. 什么是左值和右值?左值:必須是能被計(jì)算和修改的。右值:右值表達(dá)式的值必須是固定的。4. 指向常量的指針指向常量的指針一般形式:const int *p注意:*p不能作為左值。5. 常量指針常量指針一般形式: int * const p注意:*p不能作為左值。6. 指向常量的常量指針常量指針一般形式:const int * const p注意:*p不能作為左值。7. 泛型算法應(yīng)用于普通數(shù)組對(duì)數(shù)組進(jìn)行升冪排序,反轉(zhuǎn)數(shù)組內(nèi)容,復(fù)制數(shù)組等要包含頭文件包對(duì)數(shù)組進(jìn)行降冪排序和檢索要包含頭文件包(1) 反轉(zhuǎn)數(shù)組內(nèi)容:reverse(a , a+數(shù)組長(zhǎng)度)(2) 復(fù)制數(shù)組內(nèi)容 : copy(a,a + 數(shù)組長(zhǎng)度,b)(3) reverse_copy(a ,a +數(shù)組長(zhǎng)度 ,b);reverse_copy是將數(shù)組的內(nèi)容從尾到頭的逆向復(fù)制(4) 數(shù)組升冪排序:sort(a , a+數(shù)組長(zhǎng)度)(5) 數(shù)組降冪排序 : sort(b , b+ 數(shù)組長(zhǎng)度 , greater()(6) 查找數(shù)組內(nèi)容 : find(a , a+數(shù)組長(zhǎng)度 ,value)(7) 數(shù)組內(nèi)容的輸出:copy(a , a+ len ,ostream_iterator(cout,字符串);注意:可將ostream_iyerator理解為輸出流控制符,表示數(shù)組元素的數(shù)據(jù)類型字符串是數(shù)組元素間的間隔。8. 數(shù)據(jù)的簡(jiǎn)單輸入輸出C+提高了兩種格式控制方式:一種是使用ios_base類提供的接口;另一種是稱為操控符的特殊函數(shù),它的特點(diǎn)是可以直接包含在輸出和輸入表達(dá)式中,因此更加方便。不帶參數(shù)操控符定義在頭文件中,帶形式的定義在頭文件中三是無參數(shù)的操控符函數(shù)不能帶有()名稱含義作用Dec設(shè)置轉(zhuǎn)換基數(shù)為十進(jìn)制輸入/輸出oct設(shè)置轉(zhuǎn)換基數(shù)為八進(jìn)制輸入/輸出Hex設(shè)置轉(zhuǎn)換基數(shù)轉(zhuǎn)換為十六進(jìn)制輸入/輸出Endl輸出一個(gè)換行符輸出Resetiosflags(long flags)清除flag標(biāo)志位輸出Setiosflags(long flags)清除flag標(biāo)志位輸出Setfill(char ch)設(shè)置ch為填充字符輸出Setprecision(int n)設(shè)置浮點(diǎn)數(shù)輸出精度輸出Setw(int width)設(shè)置輸出字符間字段寬度輸出常量及其含義常量名含義Ios_base : left輸出域左對(duì)齊Ios_base :right輸出域右對(duì)齊Ios_base :showpoint浮點(diǎn)數(shù)輸出必須帶一個(gè)小數(shù)點(diǎn)Ios_base :showpos在正數(shù)前面加+Ios_base :scientific使用科學(xué)計(jì)數(shù)法表示浮點(diǎn)數(shù)Ios_base :fixed使用定點(diǎn)形式表示浮點(diǎn)數(shù)第二章1. string 對(duì)象(1) string對(duì)象包含于#include頭文件包中(2) 計(jì)算字符串長(zhǎng)度的函數(shù):size(),使用方法是 字符串.size()(3) 返回字符串子串的函數(shù):substr(起始位置,結(jié)束位置)注意:給出的起始位置必須位于字符串中,否則出錯(cuò)。如果結(jié)束位置大于字符串的長(zhǎng)度,則自動(dòng)截取到字符串尾部。(4) 字符串查找函數(shù):find(要查找字符串,開始查找的位置)(5) String類有一對(duì)用來指示其元素位置在的基本函數(shù)成員:begin()和end(),Begin()指示第一個(gè)元素,end()指示最后一個(gè)元素之后。如果begin()不等于end(),則算法首先作用于begin()所指元素,然后指向下一個(gè)元素,知道begin()等于end()。所以元素存在于半開區(qū)間begin,end)中。(6)char定義的字符串使用“0”作為結(jié)束標(biāo)記。String不是。2. 使用complex對(duì)象(1)這個(gè)對(duì)象包含于頭文件#include中 。使用方法:complex 對(duì)象名(實(shí)部值,虛部值)Complex使用成員函數(shù)real()和imag()函數(shù)輸出實(shí)部和虛部值(2) string類型的數(shù)組的swap()成員函數(shù)可以交換連個(gè)數(shù)組分量。第三章1. 函數(shù)的參數(shù)及其傳遞方式(1) 對(duì)象作為函數(shù)參數(shù):將對(duì)象名作為函數(shù)參數(shù),這種傳遞是單向的,不會(huì)改變實(shí)參的值。(2) 對(duì)象指針作為函數(shù)參數(shù):將對(duì)象地址作為函數(shù)參數(shù),這種傳遞會(huì)改變實(shí)參的值。(3) 引用作為函數(shù)參數(shù):定義時(shí),形參是別名;調(diào)用時(shí),實(shí)參是對(duì)象名。實(shí)參對(duì)象和形參對(duì)象代表同一個(gè)對(duì)象,所以改變形參對(duì)象就是改變實(shí)參對(duì)象。2. 使用const保護(hù)數(shù)據(jù):使用const修飾符傳遞參數(shù),只能使用參數(shù)而無權(quán)修改參數(shù)。這樣能提高系統(tǒng)安全。3. 函數(shù)返回值(1) 函數(shù)可以返回一個(gè)引用,返回一個(gè)引用的主要目的是為了將該函數(shù)用在賦值運(yùn)算符的左邊。函數(shù)原型表示方法:數(shù)據(jù)類型 &函數(shù)名(參數(shù)列表)(2) 返回指針函數(shù):返回值是存儲(chǔ)了某種類型數(shù)據(jù)的內(nèi)存地址,這種 函數(shù)稱為指針函數(shù)。聲明函數(shù)原型表示方法:類型標(biāo)示符 *函數(shù)名(參數(shù)列表)注意:當(dāng)函數(shù)返回一個(gè)空指針值是,這個(gè)可以作為程序異常的標(biāo)志。(3) 返回對(duì)象:函數(shù)返回string等對(duì)象。(4) 函數(shù)返回值作為函數(shù)參數(shù):如果把函數(shù)返回值作為另一個(gè)函數(shù)的參數(shù),這個(gè)函數(shù)的返回值必須和參數(shù)類型一致。4. 內(nèi)聯(lián)函數(shù)內(nèi)聯(lián)函數(shù)的聲明只要在函數(shù)前加上關(guān)鍵字“inline”即可。內(nèi)聯(lián)函數(shù)必須在函數(shù)第一次被調(diào)用前出現(xiàn)并定義。5. 函數(shù)的重載和默認(rèn)參數(shù)函數(shù)重載指函數(shù)名相同,但輸入?yún)?shù)類型不同或個(gè)數(shù)不同。默認(rèn)參數(shù)一般在參數(shù)列表中給出,int add(int m1 = 0,int m2 = 0)。6. 函數(shù)模板在函數(shù)定義時(shí)加上Template 或Template 。實(shí)際調(diào)用時(shí)可以不指出T的數(shù)據(jù)類型,也可顯式指出。第四章1. 定義類(1) 聲明類:class 類名Private:私有數(shù)據(jù)和函數(shù)Public:共有數(shù)據(jù)和函數(shù)Protected:保護(hù)數(shù)據(jù)和函數(shù);注意:花括號(hào)后面的分號(hào)必不可少(2) 類外定義成員函數(shù)一般形式:返回類型 類名 :成員函數(shù) (參數(shù)列表)成員函數(shù)的函數(shù)體注意:“:”是作用域運(yùn)算符,其意思表面其后的成員函數(shù)時(shí)屬于這個(gè)特定的類。(3) 數(shù)據(jù)成員的賦值注意:不能在定義數(shù)據(jù)成員的同時(shí)進(jìn)行賦值,這種做法是錯(cuò)誤的。2. 使用類的對(duì)象(1) 類不僅可以聲明對(duì)象,還可以聲明對(duì)象的引用和對(duì)象的指針,其語法與基本數(shù)據(jù)類型一樣。(2) 定義類對(duì)象的指針語法:類名 * 對(duì)象指針名;(3) 數(shù)據(jù)封裝這些內(nèi)存塊中不僅存儲(chǔ)數(shù)據(jù),也存儲(chǔ)代碼,這有利于數(shù)據(jù)和功能安全。同時(shí)這些內(nèi)存塊的結(jié)構(gòu)可被用作樣板產(chǎn)生跟多對(duì)象。3. 構(gòu)造函數(shù)(1) 為了使對(duì)象的狀態(tài)確定,必須對(duì)其進(jìn)行正確的初始化。初始化的操作和賦值操作是不同的。(2) 默認(rèn)構(gòu)造函數(shù):類名 :類名()注意:默認(rèn)構(gòu)造函數(shù)是系統(tǒng)自動(dòng)產(chǎn)生的,當(dāng)用戶定義了自己的構(gòu)造函數(shù)系統(tǒng)就不在提供默認(rèn)構(gòu)造函數(shù)。(3) 定義構(gòu)造函數(shù):構(gòu)造函數(shù)的名字和類名相同,并且定義構(gòu)造函數(shù)的時(shí)候不能有返回值類型,即使是void也不可以。(4) 類可有多個(gè)函數(shù),在類體的聲明形式如下:類名(形參1,形參2,形參3.形參n);在程序中說明一個(gè)對(duì)象時(shí),程序自動(dòng)調(diào)用構(gòu)造函數(shù)來初始化對(duì)象,使程序?yàn)閷?duì)象自動(dòng)化分配內(nèi)存。(5) 程序員不能在程序中顯示的調(diào)用構(gòu)造函數(shù),構(gòu)造函數(shù)是自動(dòng)調(diào)用的。(6) 構(gòu)造函數(shù)和運(yùn)算符new:運(yùn)算符new用于建立生存期可控的對(duì)象,new返回這個(gè)對(duì)象的指針,因此使用new建立動(dòng)態(tài)對(duì)象的語法和建立動(dòng)態(tài)變量的情況類似,其不同點(diǎn)是new和構(gòu)造函數(shù)一同起作用。(7) 當(dāng)使用new建立一個(gè)動(dòng)態(tài)對(duì)象,new首先分配足夠?qū)ο蟮膬?nèi)存,然后自動(dòng)構(gòu)造函數(shù)來初始化這塊內(nèi)存,再返回這個(gè)動(dòng)態(tài)對(duì)象的地址。(8) 構(gòu)造函數(shù)的默認(rèn)參數(shù):如果程序定義自己的有參構(gòu)造函數(shù),又想使用無參數(shù)形式的構(gòu)造函數(shù),那么就是吧構(gòu)造函數(shù)使用默認(rèn)參數(shù)設(shè)計(jì)。(9) 復(fù)制構(gòu)造函數(shù):引用在類中一個(gè)很重要的用途是用在復(fù)制構(gòu)造函數(shù)中。這一類特殊而且重要的函數(shù)通常用于使自己已有的對(duì)象來建立一個(gè)新對(duì)象。復(fù)制構(gòu)造函數(shù)原型如下:類名:類名(const 類名 &)4.析構(gòu)函數(shù)(1)析構(gòu)函數(shù)析構(gòu)函數(shù)的名稱和類名一樣,為了與構(gòu)造函數(shù)區(qū)分在析構(gòu)函數(shù)前面加符號(hào)。析構(gòu)函數(shù)不能定義任何返回類型,即使指定為void也不行。一般形式如下:類名:類名(void)(2)析構(gòu)函數(shù)在對(duì)象的生存期結(jié)束時(shí)被主動(dòng)調(diào)用。類得對(duì)象數(shù)組的每個(gè)元素調(diào)用一次構(gòu)造函數(shù)。(3)析構(gòu)函數(shù)和運(yùn)算符delete:當(dāng)使用delete刪除一個(gè)動(dòng)態(tài)對(duì)象時(shí),它首先為這個(gè)動(dòng)態(tài)對(duì)象調(diào)用析構(gòu)函數(shù),然后再釋放這個(gè)動(dòng)態(tài)對(duì)象占用的內(nèi)存。這和使用new建立動(dòng)態(tài)對(duì)象的過程剛好相反。5.成員函數(shù)重載及默認(rèn)函數(shù)(1)this指針:c+規(guī)定當(dāng)一個(gè)成員函數(shù)被調(diào)用時(shí),系統(tǒng)自動(dòng)向它傳遞一個(gè)隱含的參數(shù),該參數(shù)是一個(gè)指向調(diào)用該函數(shù)的指針,從而使成員函數(shù)知道該對(duì)那個(gè)對(duì)象進(jìn)行操作。(2)this指針是c+實(shí)現(xiàn)封裝的一種機(jī)制,它將該對(duì)象調(diào)用的成員函數(shù)連接在一起,在外部看來,每一個(gè)對(duì)象都擁有自己的成員函數(shù)。一般情況下都省略符號(hào)“this-”,而讓系統(tǒng)進(jìn)行默認(rèn)設(shè)置。6.一個(gè)類的對(duì)象作為另一個(gè)類的成員(1)類本身就是一種新的數(shù)據(jù)類型,所以一個(gè)類可以作為另一個(gè)類得成員。7.類和對(duì)象的性質(zhì)(1)對(duì)象的性質(zhì):同一類的對(duì)象之間可以相互賦值,可以使用對(duì)象數(shù)組,可以使用指向?qū)ο蟮闹羔?,使用取址運(yùn)算符&講一個(gè)對(duì)象的地址置于該指針中。對(duì)象之間賦值:Point A,B; A.Set(25,25); B = A數(shù)組對(duì)象:Point A3使用指針和取址運(yùn)算符:point *P = &A P-Display();(2) 對(duì)象可以作為函數(shù)參數(shù),如果參數(shù)傳遞采用傳對(duì)象值的方式,在被調(diào)用函數(shù)中對(duì)形參所作的改變不影響調(diào)用函數(shù)中作為實(shí)參的對(duì)象。如果傳得是對(duì)象的引用(地址)當(dāng)參數(shù)對(duì)象被修改時(shí),相應(yīng)的實(shí)參對(duì)象也會(huì)被修改。C+建議使用引用,在前面加上const這樣可以避免修改原來的數(shù)據(jù)成員。(3) 對(duì)象作為函數(shù)參數(shù)時(shí),可以使用對(duì)象,對(duì)象引用,和對(duì)象指針。形式為:Void print(Point a)a.Display;/對(duì)象作為參數(shù)Void print(Point &a)a.Display;/對(duì)象引用作為參數(shù)Void print(Point *p)p-Display;/對(duì)象指針作為參數(shù)(4) 一個(gè)對(duì)象可以作為另一個(gè)類得成員。8. 類的性質(zhì)(1) 類本身的成員函數(shù)可以使用類所以的成員(2) 類得對(duì)象只能訪問公有成員函數(shù),例如輸出x只能使用A.Getx(),不能使用A.x(3) 其他函數(shù)不能使用類的私有成員,也不能使用類得公有成員函數(shù),他們只能通過類的對(duì)象使用類得公有成員函數(shù)。(4) 雖然一個(gè)類可以包含另一個(gè)類的對(duì)象,但是這個(gè)類也只能通過它被包含的這個(gè)類得對(duì)象使用那個(gè)類的成員函數(shù),通過成員函數(shù)使用數(shù)據(jù)成員,例如:Loc.Set(x,y)(5) 不完全類得聲明:只要當(dāng)使用類產(chǎn)生對(duì)象時(shí),才進(jìn)行內(nèi)存分配,這種對(duì)象的建立過程稱為實(shí)例化。(6) 有時(shí)候?qū)㈩愖鳛橐粋€(gè)整體使用而不存取取成員。(7) 不完全類的定義沒有類體。不完全類聲明的類不能實(shí)例化(8) 類也可以是空的,不包含任何內(nèi)容。(9) 類中的一個(gè)成員名可以使用類名和作用域運(yùn)算符來顯示的指定,這稱為成員名限定。例如:void MyClass:set(int i)MyClass:number = i/顯示的指定訪問MyClass類中的標(biāo)示符number9. 對(duì)象,類和消息(1) 接收對(duì)象名,調(diào)用操作名和必要的參數(shù)是對(duì)象傳達(dá)消息的一般組成部分。第五章1. 對(duì)象成員的初始化(1) 可以在一個(gè)類中說明具有某個(gè)類的類型的數(shù)據(jù)成員,在A類中說明對(duì)象成員的一般形式如下:Class A類名1 成員名1;類名2 成員名2;。類名n 成員名n;A類得構(gòu)造函數(shù)的形式如下:A:A(參數(shù)表0):成員1(參數(shù)表1),成員2(參數(shù)列表2),成員3(成員列表3)其他操作。(2) 靜態(tài)成員:簡(jiǎn)單成員函數(shù)是指聲明中不含const ,volatile ,static關(guān)鍵字的函數(shù),如果類得數(shù)據(jù)成員或成員函數(shù)使用關(guān)鍵字static進(jìn)行修飾,這樣的成員稱為靜態(tài)成員或靜態(tài)成員函數(shù),統(tǒng)稱為靜態(tài)成員。(3) 靜態(tài)數(shù)據(jù)成員只能說明一次如果在類中僅對(duì)靜態(tài)數(shù)據(jù)成員進(jìn)行聲明,則必須在文件作用域的某個(gè)地方進(jìn)行定義。在進(jìn)行初始化時(shí),必須進(jìn)行成員名限定。例如:int Test : x = 25也可以直接在構(gòu)造函數(shù)中使用類成員限定符對(duì)其進(jìn)行初始化。例如:Test(int a,int b)Test:x = a; n = b(4) 除靜態(tài)數(shù)據(jù)成員的初始化之外,靜態(tài)成員遵循類得其他成員所遵循的訪問限制,雖然還沒有建立對(duì)象,但是靜態(tài)成員已經(jīng)存在。(5) Static不是函數(shù)類型中的一部分,所以在類聲明之外定義靜態(tài)成員函數(shù)時(shí),不使用static。在類中定義的靜態(tài)成員函數(shù)時(shí)內(nèi)聯(lián)的。(6) 類的任何成員函數(shù)都可以訪問靜態(tài)成員。因?yàn)殪o態(tài)成員函數(shù)沒有this指針,所以靜態(tài)成員函數(shù)只能通過對(duì)象名(或指向?qū)ο蟮闹羔槪┰L問該對(duì)象的非靜態(tài)成員。2. 友元函數(shù)(1) 友元函數(shù)可以存取私有成員,公有成員和保護(hù)成員。其實(shí)友元函數(shù)可以是一個(gè)類或函數(shù),尚未定義的類也可以作為友元。(2) 友元函數(shù)在類中聲明,但是他并不屬于類得成員函數(shù),所以可以在類得外面想普通函數(shù)一樣定義這個(gè)函數(shù)。(3) 將成員函數(shù)作為友元:一個(gè)類得成員函數(shù)(包括構(gòu)造函數(shù)和析構(gòu)函數(shù))可以通過使用friend說明為另一個(gè)類非友元。(4) 將一個(gè)類說明為另一個(gè)類的友元:可以講一個(gè)類說明為另一個(gè)類得友元,這時(shí)整個(gè)類得成員函數(shù)均具有友元函數(shù)的性能。聲明形式為:friend class 類名;3. Const對(duì)象(1) 可以造類中使用const關(guān)鍵字定義數(shù)據(jù)成員和成員函數(shù)或修飾一個(gè)對(duì)象。一個(gè)const對(duì)象只能訪問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ù)改變對(duì)象的值,這是可以使用常引用作為參數(shù)。例如:void Display(const double &r)/這樣不會(huì)破壞實(shí)參(4) 常對(duì)象:在 對(duì)象名前使用const聲明常對(duì)象,但是聲明時(shí)必須同時(shí)進(jìn)行初始化,而且不能被更新。語法:類名 const 對(duì)象名(參數(shù)表);/必須進(jìn)行初始化(5) 常成員函數(shù):可以聲明一個(gè)成員函數(shù)為const函數(shù)。一個(gè)const對(duì)象可以調(diào)用const函數(shù),但不能調(diào)用非const成員函數(shù)。Const放在函數(shù)聲明之前意味著返回值是常量,但是這不符合語法,必須將關(guān)鍵字const放在參數(shù)表之后,才能說明該函數(shù)是一個(gè)const成員函數(shù)。聲明常成員函數(shù)的格式如下:類型標(biāo)示符 函數(shù)名 (參數(shù)列表)const;為了保證不僅聲明const成員函數(shù),而且確實(shí)也定義為const函數(shù),程序員在定義函數(shù)時(shí)必須重申const聲明。定義格式如下:類型標(biāo)示符 類名:函數(shù)名(參數(shù)列表) const函數(shù)體const位于函數(shù)參數(shù)表之后,函數(shù)體之前。也可用內(nèi)聯(lián)函數(shù)定義const函數(shù)格式如下:類型標(biāo)示符 函數(shù)名(參數(shù)列表)const函數(shù)體注意:在定義成員函數(shù)時(shí),函數(shù)體之前加上const可以防止覆蓋函數(shù)改變數(shù)據(jù)成員值。4.指向類成員函數(shù)的指針(1)對(duì)象是一個(gè)完整的實(shí)體,c+包含了指向類成員的指針來封裝這一對(duì)象。可以用指針范文內(nèi)存中給定類型的任何對(duì)象,指向類成員的指針則用來訪問某個(gè)特定類的對(duì)象中給定類型的任何成員。第六章1. 繼承(1) 單一繼承的一般形式:class 派生類名:訪問控制 基類名Private:成員聲明列表Protected:成員聲明列表Public:成員聲明列表(2) 派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù):定義派生類的構(gòu)造函數(shù):派生類名:派生類名(參數(shù)表0):基類名(參數(shù)表)函數(shù)體;注意:構(gòu)造函數(shù)(包括析構(gòu)函數(shù))是不被繼承的,所以一個(gè)派生類只能調(diào)用他的直接基類的構(gòu)造函數(shù)。當(dāng)定義派生類的一個(gè)對(duì)象時(shí),首先調(diào)用基類的構(gòu)造函數(shù),對(duì)基類成員進(jìn)行初始化,然后執(zhí)行派生類的構(gòu)造函數(shù),如果某個(gè)基類仍是一個(gè)派生類,則這個(gè)過程遞歸進(jìn)行。(3) 派生類的聲明關(guān)鍵字protected之后聲明的是類的保護(hù)成員,保護(hù)成員具有私有成員和公有成員的雙重角色:對(duì)派生類得成員函數(shù)而言,它是公有成員,可以被訪問;而對(duì)其他成員函數(shù)而言則仍是私有成員,不能被訪問。(4) 訪問權(quán)限和賦值兼容規(guī)則:繼承類和基類成員的訪問性保持一樣。(5) 派生的對(duì)象可以賦給基類的對(duì)象,派生類的對(duì)象可以初始化基類的引用,派生類的對(duì)象的地址可以賦給指向基類的指針。注意:靜態(tài)成員被繼承,繼承類和基類共享同一個(gè)靜態(tài)變量。(6) ias和has-a的區(qū)別:(7) 公有繼承存取權(quán)限表基類point的成員Rectangle的成員函數(shù)對(duì)point的訪問基類對(duì)象a派生類對(duì)象r1外部函數(shù)Private成員不可訪問不可訪問不可訪問Protected成員protected不可訪問不可訪問Public成員public可訪問可訪問2.私有派生(1)通過私有派生,基類的私有和不可訪問成員在派生類中是不可訪問的,而公有和保護(hù)成員這時(shí)就成了派生類的私有成員,派生類的對(duì)象不能訪問繼承的基類成員,必須定義公有的成員函數(shù)作為接口。注意:雖然派生類的成員函數(shù)可通過自定義的函數(shù)訪問基類的成員,但將該派生類作為基類再繼續(xù)派生時(shí),這時(shí)即可使用公有派生,原基類公有成員在新的派生類中也將是不可訪問的。(2) 保護(hù)派生也可使用protected,這種派生都使原來的訪問權(quán)限降一個(gè)級(jí)別。(3) 多重繼承:形式:class 類名1:訪問控制 類名2,訪問控制類名3,訪問控制類名n定義派生類自己的成員;3. 作用域分辨符合成員名操作符(1) 作用域分辨操作的一般形式如下:類名:標(biāo)示符”類名“可以是任一類和派生類名,“類標(biāo)示符”是該類中生命的任一成員。(2) 派生類支配基類的同名函數(shù)基類的成員和派生類新增的成員都有類作用域,基類再外層,派生類在內(nèi)層。如果派生類定義類一個(gè)和基類成員函數(shù)同名的新成員函數(shù)(因?yàn)閰?shù)不同屬于重載,所以這里是指具有相同參數(shù)表的成員函數(shù)),派生類的新成員函數(shù)就覆蓋了外層的同名成員函數(shù)。在這種情況下,直接使用成員名只能訪問派生類的成員函數(shù),只要使用作用域分辨,才能訪問基類的同名成員函數(shù)。(3) 由于二義性,一個(gè)類不能從同一個(gè)類中直接繼承最多一次。注意:如果必須這樣,可以使用一個(gè)中間類。二義性檢查是在訪問權(quán)限檢查之前進(jìn)行的。因此,成員的訪問權(quán)限不能解決二義性問題.那么如何解決二義性問題,使用作用域分辨符進(jìn)行存取。第七章1. 類模板(1) 將一些數(shù)據(jù)類型從類中分離出來形成的一個(gè)通用的數(shù)據(jù)類型T,并為這個(gè)數(shù)據(jù)類型T設(shè)計(jì)一個(gè)操作集,在編譯器編譯時(shí)與特定的類型聯(lián)系起來。T不是類,天擦很難過稱之為類模板。(2) 類模板的成分及語法:class在這里是“任意內(nèi)部類型或用戶定義類型”,T可能是任意結(jié)構(gòu)或類。類模板的一般聲明形式:template class 類名類體;(3) 類模板的對(duì)象:類名 對(duì)象名(構(gòu)造函數(shù)實(shí)參列表);類名 對(duì)象名;、默認(rèn)或者無參構(gòu)造函數(shù)(4) 在類體外面定義成員函數(shù)時(shí),必須用template重寫類模板聲明。一般形式如下:template 返回類型 類名:成員函數(shù)名(函數(shù)參數(shù)列表)/函數(shù)體(5) 是指template的內(nèi)使用class(或typename)聲明的參數(shù),構(gòu)造函數(shù)和析構(gòu)函數(shù)沒有返回類型。(6) 類模板的派生和繼承:類模板也可以繼承,繼承的方法與普通的類一樣。聲明模板繼承之前,必須重新聲明類模板。模板類的基類和派生類很復(fù)雜。2. 向量與泛型算法(1) 在數(shù)組生存期內(nèi),數(shù)組的大小事不會(huì)改變的。向量是一位數(shù)組的類版本,它與數(shù)組相似,其中的元素項(xiàng)是連續(xù)存儲(chǔ)的,它他和數(shù)組的不同的是:向量中存儲(chǔ)元素的多少可以在運(yùn)行中根據(jù)需要?jiǎng)討B(tài)地增長(zhǎng)和縮小。向量是類模板,具有成員函數(shù)。(2) 定義向量列表:向量(vector)類模板的定義在圖文件vector中,他定義四種構(gòu)造函數(shù),用來定義由各元素組成列表:length表示長(zhǎng)度,type表示數(shù)據(jù)類型,name表示對(duì)象名,定義列表如下:Vectorname;/定義type的向量表Vectorname(length);/定義具有l(wèi)ength哥type的向量,元素初始化為0Vectorname(length a);/定義具有l(wèi)ength個(gè)type的向量元素初始化為aVectorname1(name);/使用已定義的向量name定義name1(3) 不能使用列表初始化向量,但可以先初始化一個(gè)數(shù)組,然后把數(shù)組的內(nèi)容復(fù)制給向量。例如:int IA10 = 1,98,1,20,152,20,48,10,14,30;VectorVB(IA,IA+10)IA是數(shù)組名,代表數(shù)組的起始地址。IA+10是VB的結(jié)束標(biāo)志位,因?yàn)橄蛄孔詣?dòng)產(chǎn)生 一個(gè)結(jié)束標(biāo)志。(4) 泛型指針:向量具有指示第一個(gè)元素的標(biāo)記begin和指示結(jié)束的標(biāo)記end所指元素。當(dāng)元素部位空是,算法首先會(huì)作用于begin所指元素,并將begin前進(jìn)一個(gè)位置。(5) 在向量中,泛型指針是在底層指針的行為之上提供一層抽象化機(jī)制,取代程序原來的“指針直接操作方式”。假設(shè)用T表示向量的參數(shù)化數(shù)據(jù)類型,iterator在STL里面是一種通用的指針,它在向量中的作用相當(dāng)于T*.用 iterator什么向量的一般形式:Vector:reverse_iterator 指針名;逆向向量泛型指針使用reverseiterator,聲明方法如下:Vector:reverse_iterator 指針名(6) 使用typedef可以使聲明或定義泛型的手續(xù)簡(jiǎn)單易懂,例如下面泛型指針P:iterator p;(7) 向量的數(shù)據(jù)類型向量除了可以使用基本數(shù)據(jù)類型之外,還可以使用構(gòu)造類型,只要符合構(gòu)成法則即可。3.向量最基本的操作方法(1)訪問向量容量的方法:Size():向量中當(dāng)前已經(jīng)存放的對(duì)象個(gè)數(shù)。Max_Size():返回向量中可以容納最多對(duì)象的個(gè)數(shù),一般式尋址空間所容納的對(duì)象的個(gè)數(shù)。Capacity():返回?zé)o需再次分配內(nèi)存就能容納的對(duì)象個(gè)數(shù)。他的初始值就是程序員最開始申請(qǐng)的元素個(gè)數(shù)。它在原來的基礎(chǔ)上自動(dòng)翻倍擴(kuò)充空間。Max_size = capacity() = size()(2) 訪問向量中對(duì)象的方法Front():返回向量中第一個(gè)對(duì)象Back():返回想了中的最后一個(gè)對(duì)象Operator(size_type,n):返回向量中第n+1個(gè)對(duì)象(3) 在向量中插入對(duì)象的方法Push_back(const T&):向向量尾部插入一個(gè)對(duì)象Insert(iterator it,const T&):想it所指的向量位置前插入一個(gè)對(duì)象Insert(iterator it,size_type n,const T&X):想it所指向量位置前插入n哥值為X的對(duì)象。(4) 在向量中刪除對(duì)象的方法Pop_back(const T&):刪除向量中最后一個(gè)對(duì)象。Erase(iterator it):刪除it所指向的容器對(duì)象。Clear()了刪除向量中所有的對(duì)象,empty()返回true值。第八章一: 動(dòng)態(tài)聯(lián)編中的復(fù)制兼容性及名字支配規(guī)律(1) 對(duì)象的內(nèi)存地址空間中只包含數(shù)據(jù)成員,并不存儲(chǔ)有關(guān)成員函數(shù)的信息。這些成員函數(shù)的地址翻譯過程與其對(duì)象的內(nèi)存地址無關(guān)。(2) 聲明的基類指針只能指向基類,派生類只能指向派生類他們的原始類型決定他們只能調(diào)用各自的同名函數(shù)。除非派生類沒有基類的同名函數(shù)。二:動(dòng)態(tài)聯(lián)編的多態(tài)性(1) 使用關(guān)鍵字virtual聲明的函數(shù),將這種函數(shù)稱為虛函數(shù)。當(dāng)編譯系統(tǒng)含有虛函數(shù)時(shí),將為他建立一個(gè)虛函數(shù)表,表中的每一個(gè)元素都指向一個(gè)虛函數(shù)表的指針。此外,編譯系統(tǒng)也為類增加一個(gè)數(shù)據(jù)成員,這個(gè)數(shù)據(jù)成員是一個(gè)指向該虛函數(shù)表的指針,通常稱為vptr。(2) 派生類嫩繼承基類的虛函數(shù)表,而且只要是和基類同名(參數(shù)也相同)的成員函數(shù),無論是否使用virtual聲明,他們搜自動(dòng)成為虛函數(shù)。如果繼承類沒有改寫繼承基類的虛函數(shù),則函數(shù)指針調(diào)用基類的虛函數(shù)。如果派生類改寫了基類的虛函數(shù),編譯系統(tǒng)將重新為派生類的虛函數(shù)建立地址,函數(shù)指針會(huì)調(diào)用該寫過的虛函數(shù)。(3) 一旦基類定義了虛函數(shù),該基類的派生類中的同名函數(shù)也自動(dòng)稱為虛函數(shù)。三:虛函數(shù)實(shí)現(xiàn)多態(tài)的條件(1) 官架子virtual指示c+編譯器對(duì)調(diào)用虛函數(shù)進(jìn)行動(dòng)態(tài)連編。這種多態(tài)性是程序運(yùn)行到需要的語句出才動(dòng)態(tài)確定的,所以稱為運(yùn)行時(shí)的多態(tài)性。不過使用虛函數(shù)并不一定產(chǎn)生

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論