知識(shí)題庫-自考c++章節(jié)知識(shí)筆記_第1頁
知識(shí)題庫-自考c++章節(jié)知識(shí)筆記_第2頁
知識(shí)題庫-自考c++章節(jié)知識(shí)筆記_第3頁
知識(shí)題庫-自考c++章節(jié)知識(shí)筆記_第4頁
知識(shí)題庫-自考c++章節(jié)知識(shí)筆記_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

會(huì)計(jì)實(shí)操文庫知識(shí)題庫-自考c++章節(jié)知識(shí)筆記知識(shí)點(diǎn)總結(jié)第一章1.動(dòng)態(tài)分配內(nèi)存使用new關(guān)鍵字:1)為一個(gè)對(duì)象分配內(nèi)存:指針名=new類型名;2)為一個(gè)對(duì)象數(shù)組分配內(nèi)存:指針名=new類型名[長度];使用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ì)象名例如:inta=56;int&b=a;則b是對(duì)a的引用3.什么是左值和右值?左值:必須是能被計(jì)算和修改的。右值:右值表達(dá)式的值必須是固定的。4.指向常量的指針指向常量的指針一般形式:constint*p注意:*p不能作為左值。5.常量指針常量指針一般形式:int*constp注意:*p不能作為左值。6.指向常量的常量指針常量指針一般形式:constint*constp注意:*p不能作為左值。7.泛型算法應(yīng)用于普通數(shù)組對(duì)數(shù)組進(jìn)行升冪排序,反轉(zhuǎn)數(shù)組內(nèi)容,復(fù)制數(shù)組等要包含<algorithm>頭文件包對(duì)數(shù)組進(jìn)行降冪排序和檢索要包含<functional>頭文件包(1)反轉(zhuǎn)數(shù)組內(nèi)容:reverse(a,a+數(shù)組長度)(2)復(fù)制數(shù)組內(nèi)容:copy(a,a+數(shù)組長度,b)(3)reverse_copy(a,a+數(shù)組長度,b);reverse_copy是將數(shù)組的內(nèi)容從尾到頭的逆向復(fù)制(4)數(shù)組升冪排序:sort(a,a+數(shù)組長度)(5)數(shù)組降冪排序:sort(b,b+數(shù)組長度,greater<Type>())(6)查找數(shù)組內(nèi)容:find(a,a+數(shù)組長度,value)(7)數(shù)組內(nèi)容的輸出:copy(a,a+len,ostream_iterator<Type>(cout,"字符串"));注意:可將ostream_iyerator理解為輸出流控制符,<Type>表示數(shù)組元素的數(shù)據(jù)類型"字符串"是數(shù)組元素間的間隔。8.數(shù)據(jù)的簡單輸入輸出C++提高了兩種格式控制方式:一種是使用ios_base類提供的接口;另一種是稱為操控符的特殊函數(shù),它的特點(diǎn)是可以直接包含在輸出和輸入表達(dá)式中,因此更加方便。不帶參數(shù)操控符定義在頭文件<iostream>中,帶形式的定義在頭文件<iomanip>中三是無參數(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(longflags)清除flag標(biāo)志位輸出Setiosflags(longflags)清除flag標(biāo)志位輸出Setfill(charch)設(shè)置ch為填充字符輸出Setprecision(intn)設(shè)置浮點(diǎn)數(shù)輸出精度輸出Setw(intwidth)設(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<string>頭文件包中(2)計(jì)算字符串長度的函數(shù):size(),使用方法是字符串.size()(3)返回字符串子串的函數(shù):substr(起始位置,結(jié)束位置)注意:給出的起始位置必須位于字符串中,否則出錯(cuò)。如果結(jié)束位置大于字符串的長度,則自動(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>中。使用方法:complex<數(shù)據(jù)類型>對(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ù)列表中給出,intadd(intm1=0,intm2=0)。6.函數(shù)模板在函數(shù)定義時(shí)加上Template<typenameT>或Template<classT>。實(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ì)象之間賦值:PointA,B;A.Set(25,25);B=A數(shù)組對(duì)象:PointA[3]使用指針和取址運(yùn)算符:point*P=&AP->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ì)象指針。形式為:Voidprint(Pointa){a.Display;}//對(duì)象作為參數(shù)Voidprint(Point&a){a.Display;}//對(duì)象引用作為參數(shù)Voidprint(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)算符來顯示的指定,這稱為成員名限定。例如:voidMyClass::set(inti){MyClass::number=i//顯示的指定訪問MyClass類中的標(biāo)示符number}9.對(duì)象,類和消息(1)接收對(duì)象名,調(diào)用操作名和必要的參數(shù)是對(duì)象傳達(dá)消息的一般組成部分。第五章1.對(duì)象成員的初始化(1)可以在一個(gè)類中說明具有某個(gè)類的類型的數(shù)據(jù)成員,在A類中說明對(duì)象成員的一般形式如下:ClassA{類名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)成員:簡單成員函數(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)行成員名限定。例如:intTest::x=25也可以直接在構(gòu)造函數(shù)中使用類成員限定符對(duì)其進(jìn)行初始化。例如:Test(inta,intb){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ù)的性能。聲明形式為:friendclass類名;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ù)。例如:voidDisplay(constdouble&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<類模板參數(shù)>class類名{類體};(3)類模板的對(duì)象:類名<模板實(shí)例化參數(shù)類型>對(duì)象名(構(gòu)造函數(shù)實(shí)參列表);類名<模板實(shí)例化參數(shù)類型>對(duì)象名;、、默認(rèn)或者無參構(gòu)造函數(shù)(4)在類體外面定義成員函數(shù)時(shí),必須用template重寫類模板聲明。一般形式如下:template<模板參數(shù)>返回類型類名<模板類型參數(shù)>::成員函數(shù)名(函數(shù)參數(shù)列表){//函數(shù)體}(5)<模板類型參數(shù)>是指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)地增長和縮小。向量是類模板,具有成員函數(shù)。(2)定義向量列表:向量(vector)類模板的定義在圖文件vector中,他定義四種構(gòu)造函數(shù),用來定義由各元素組成列表:length表示長度,type表示數(shù)據(jù)類型,name表示對(duì)象名,定義列表如下:Vector<type>name;//定義type的向量表Vector<type>name(length);//定義具有l(wèi)ength哥type的向量,元素初始化為0Vector<type>name(lengtha);//定義具有l(wèi)ength個(gè)type的向量元素初始化為aVector<type>name1(name);//使用已定義的向量name定義name1(3)不能使用列表初始化向量,但可以先初始化一個(gè)數(shù)組,然后把數(shù)組的內(nèi)容復(fù)制給向量。例如:intIA[10]={1,98,1,20,152,20,48,10,14,30};Vector<int>VB(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<type>::reverse_iterator指針名;逆向向量泛型指針使用reverse—iterator,聲明方法如下:Vector<數(shù)據(jù)類型>::reverse_iterator指針名(6)使用typedef可以使聲明或定義泛型的手續(xù)簡單易懂,例如下面泛型指針P:iteratorp;(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(constT&):向向量尾部插入一個(gè)對(duì)象Insert(iteratorit,constT&):想it所指的向量位置前插入一個(gè)對(duì)象Insert(iteratorit,size_typen,constT&X):想it所指向量位置前插入n哥值為X的對(duì)象。(4)在向量中刪除對(duì)象的方法Pop_back(constT&):刪除向量中最后一個(gè)對(duì)象。Erase(iteratorit):刪除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)生多態(tài)性,也不一定使用動(dòng)態(tài)聯(lián)編。(2)產(chǎn)生多態(tài)性有如下3哥前提:1.類之間的繼承關(guān)系滿足賦值兼容性規(guī)則。2.改寫同名虛函數(shù)。3.根據(jù)賦值兼容性規(guī)則使用指針。(3)在構(gòu)造函數(shù)和析構(gòu)函數(shù)中調(diào)用虛函數(shù)采用靜態(tài)連編,即他們所調(diào)用的虛函數(shù)是自己的類或基類中定義的函數(shù)

溫馨提示

  • 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)論