




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
面向?qū)ο笥嘘P概念:類:具有相似屬性和行為的對象集合,把數(shù)據(jù)和操作封裝在一起對象:數(shù)據(jù)+操作。面向?qū)ο筇匦裕撼橄?,封裝,繼承,多態(tài)2、輸入輸出:輸入cin>>a>>b;輸入不能有endl。輸出cout<<a<<b<<endl;3、const修飾符:指向常量的指針:如constchar*p=”abcd”;不容許變化指針所指的常量,如p[3]=’x’是錯誤的,不過可以變化指針p的值p=“mn”;是對的。常指針:char*constp=“abcd”;指針自身是常量,不能移動,不過所指內(nèi)容為變量,可以更改,如p[3]=’x’是對的。常數(shù)據(jù)組員,常組員函數(shù),常對象:在類中申明的數(shù)據(jù)或函數(shù)可以是常量,對于常數(shù)據(jù)組員要用初始化列表初始值,在C++類中,const關鍵字可以修飾對象和組員函數(shù),const對象不能被修改,一種常對象只能調(diào)用它的常組員函數(shù),不能調(diào)用一般組員函數(shù)。常組員函數(shù)格式:類型闡明符函數(shù)名(參數(shù)表)const;常組員函數(shù)可以參與重載。常組員函數(shù)不能更新對象的數(shù)據(jù)組員,也不能調(diào)用該類中的一般組員函數(shù),const組員函數(shù)不能修改數(shù)據(jù)組員。4、內(nèi)聯(lián)函數(shù):在函數(shù)闡明前冠以關鍵字inline,目的是消除函數(shù)調(diào)用時的系統(tǒng)開銷,提高運行速度。注意:內(nèi)聯(lián)函數(shù)體內(nèi)不能有循環(huán)語句和switch語句。內(nèi)聯(lián)函數(shù)的申明必須出目前內(nèi)聯(lián)函數(shù)第一次被調(diào)用之前。類構造中所有在類闡明體內(nèi)定義的函數(shù)都是內(nèi)聯(lián)函數(shù)。5、帶有缺省參數(shù)值的函數(shù):在闡明函數(shù)原型時,可以給一種或多種形參指定缺省值,調(diào)用時如給出實參,則采用實參值,否則采用預先給出的默認形參值。如某一種類point的構造函數(shù)原型為point(intx=1,inty=0);則參數(shù)x和y的缺省值為1和0.注意:在函數(shù)原型中,所有缺省值的參數(shù)都必須從右往左缺省,在函數(shù)調(diào)用時從左往右將實參與形參結(jié)合,如point(intx=1,inty=0){X=x;Y=y;},那么執(zhí)行pointp(3)之后p的X和Y值分別為3,0.6、函數(shù)重載:C++容許功能相近的函數(shù)在相似的作用域內(nèi)以相似函數(shù)名申明,從而形成重載。注意:重載函數(shù)的形參必須不一樣:個數(shù)不一樣或類型不一樣。編譯程序?qū)⒏鶕?jù)實參和形參的類型及個數(shù)的最佳匹配來選擇調(diào)用哪一種函數(shù)。例:voidadd(intm,intn){cout<<”twointegernumbersm+n=”<<m+n<<endl;}voidadd(floatx,floaty){cout<<”twofloatnumbersm+n=”<<m+n<<endl;}inti=1,j=2;floatf=1.0,d=2.0;add(i,j);add(f,d);則前者調(diào)用第一種函數(shù),后者調(diào)用第二個函數(shù)輸出twointegernumbersm+n=3twofloatnumbersm+n=3.07、引用:引用(&)是標識符的別名,例如:inti;int&ri=i;//建立一種int型的引用ri,并將其初始化為變量i的一種別名。注意:申明一種引用時,必須同步對它進行初始化,使它指向一種已存在的對象,不能申明完畢后再賦值,如inti;int&ri;//錯誤ri=i;一旦一種引用被初始化后,就不能改為指向其他對象。如:inti,j;int&ri=i;ri=&j;//錯誤引用可以作為形參作為傳地址調(diào)用,效果和指針同樣。voidswap(int&a,int&b){...}引用與地址符的區(qū)別:引用運算符僅在申明是帶有引用運算符&,后來就像使用一般變量同樣,其他場所使用&都是地址操作符8、作用域標識符(::)假如但愿在局部變量的作用域內(nèi)使用同名的全局變量,在該變量前加上::,如::a代表全局變量。9、new和delete運算符new用來內(nèi)存分派,最基本格式為:指針變量=new類型名;該語句在程序運行時從自由存儲區(qū)中為程序分派一類型名字節(jié)大小空間,該空間首地址被存于指針變量中。運算符delete用于釋放new分派的存儲空間,基本格式:delete指針名;闡明:可以用new將分派的對象初始化,new和delete都可以重載。new分派的空間使用結(jié)束后應當也只能用delete顯式釋放,否則將不能回收而變成死空間使用new為數(shù)組動態(tài)分派內(nèi)存:指針變量=new類型名[下標值];如int*p=newint[10];釋放時:delete[]指針變量名;如delete[]p;new可認為簡樸變量分派內(nèi)存時同步進行初始化,指針變量=new類型名(初始化列表);如int*p=newint(10);10、類是一種顧客自定義類型,申明形式:class類名稱{public:公有組員(外部接口)private:私有組員protected:保護型組員};類組員中缺省訪問方式為私有公有類型組員:在關鍵字public背面申明,它們是類與外部的接口,任何外部函數(shù)都可以訪問公有類型數(shù)據(jù)和函數(shù)。私有類型組員:在關鍵字private背面申明,只容許本類中的函數(shù)訪問,而類外部的任何函數(shù)都不能訪問。假如緊跟在類名稱的背面申明私有組員,則關鍵字private可以省略。保護類型:在類的定義中,闡明為protected的數(shù)據(jù)組員稱為保護組員。保護數(shù)據(jù)組員具有雙重作用:對于其派生類而言,是公有的,而對于其外部的程序而言,是私有的類的組員:組員數(shù)據(jù)與一般的變量申明相似,但需要將它放在類的申明體中。組員函數(shù)在類中闡明原形,可以在類外給出函數(shù)體實現(xiàn),并在函數(shù)名前使用類名加以限定。也可以直接在類中給出函數(shù)體,形成內(nèi)聯(lián)組員函數(shù)。類的對象是該類的某一特定實體,即類類型的變量。申明形式:類名對象名;例:ClockmyClock;類中組員的訪問方式:類中組員互訪:直接使用組員名類外訪問:使用“對象名.組員名”或“對象指針名->組員名“方式訪問public屬性的組員11、構造函數(shù)構造函數(shù)的作用是在對象被創(chuàng)立時使用特定的值構造對象,或者說將對象初始化為一種特定的狀態(tài)。特點:在對象創(chuàng)立時或new類名時由系統(tǒng)自動調(diào)用。假如程序中未申明,則系統(tǒng)自動產(chǎn)生出一種默認形式的構造函數(shù),只有程序中定義有構造函數(shù),系統(tǒng)不再自動生成缺省的構造函數(shù)缺省構造函數(shù)類名::缺省構造函數(shù)名(){}函數(shù)名必須與類名相似不能指定函數(shù)返回類型參數(shù)可以有,也可以無,參數(shù)可以帶默認形參值,因此一種類可以有多種構造函數(shù),從而構造函數(shù)可以重載。如有一種類A,當執(zhí)行語句Aa;時將自動調(diào)用該類的無參構造函數(shù)或缺省的構造函數(shù)或帶默認形參值的構造函數(shù),但無參構造函數(shù)和帶默認形參值的構造函數(shù)兩者同步出現(xiàn)輕易出現(xiàn)調(diào)用時引起二義性容許是內(nèi)聯(lián)函數(shù)運用構造函數(shù)創(chuàng)立對象有兩種措施:用構造函數(shù)之間創(chuàng)立對象:類名對象名(實參表);如pointp(1,2);運用構造函數(shù)創(chuàng)立對象時,通過指針和new來實現(xiàn):類名*指針變量=new類名(實參表);如A*p=newA(1,2);注意類A申明對象指針并不調(diào)用構造函數(shù),而是通過new創(chuàng)立臨時對象調(diào)用構造函數(shù),因此該語句只調(diào)用構造函數(shù)1次12、拷貝構造函數(shù)拷貝構造函數(shù)是一種特殊的構造函數(shù),其形參為本類的對象引用,作用是用已經(jīng)存在的對象初始化另一種同類的新對象。類名(類名&對象名);//拷貝構造函數(shù)如類A拷貝構造函數(shù)為:A(A&x);拷貝構造函數(shù)特點:也是構造函數(shù),因此其函數(shù)名與類名相似,沒有返回值只有一種參數(shù),并且是本類的對象引用,因此一種類只能有一種,不能重載每一種類均有一種拷貝構造函數(shù),假如沒有定義,系統(tǒng)會自動生成一種缺省的調(diào)用拷貝構造函數(shù)3種狀況:當用類的一種對象去初始化該類的另一種對象時系統(tǒng)自動調(diào)用拷貝構造函數(shù)實現(xiàn)拷貝賦值。若函數(shù)的形參為類對象,調(diào)用函數(shù)時,實參賦值給形參,系統(tǒng)自動調(diào)用拷貝構造函數(shù)。當函數(shù)的返回值是類對象時,系統(tǒng)自動調(diào)用拷貝構造函數(shù)。深拷貝和淺拷貝:缺省的拷貝構造函數(shù)所實現(xiàn)的數(shù)據(jù)組員逐一賦值就是淺拷貝,當類中有指針時,需要自定義拷貝構造函數(shù),謂深拷貝。13、析構函數(shù)完畢對象被刪除前的某些清理工作。特點:析構函數(shù)與構造函數(shù)名相似,但它前面必須加一種波浪號~析構函數(shù)沒有返回值析構函數(shù)沒有參數(shù),因此一種類中只能有一種析構函數(shù),因此析構函數(shù)不能重載當撤銷對象時,或delete對象指針編譯系統(tǒng)自動調(diào)用析構函數(shù)假如沒有定義析構函數(shù),系統(tǒng)自動生成一種缺省的析構函數(shù)類名::~缺省析構函數(shù)名(){}14、組員初始化列表在申明類時,不能在數(shù)據(jù)組員的申明中對數(shù)據(jù)組員進行初始化,一般在構造函數(shù)中用賦值語句進行,但對于內(nèi)嵌的對象、常量、引用數(shù)據(jù)組員需要在構造函數(shù)的組員初始化列表中進行。帶有組員初始化列表的構造函數(shù)一般格式:類名::構造函數(shù)名(參數(shù)表):(組員初始化列表){。。。。}15、this指針隱含于每一種類的組員函數(shù)中的特殊指針。16、對象數(shù)組:類名數(shù)組名[下標值];該數(shù)組中每個元素都是對象,都會自動調(diào)用構造函數(shù),當數(shù)組中每一種對象被刪除時,系統(tǒng)都要調(diào)用一次析構函數(shù)。訪問措施:數(shù)組名[下標].組員名17、對象指針:類名*對象指針名;定義對象指針不會調(diào)用構造函數(shù)運用對象指針可以訪問單個對象組員,如point*p,ob;p=&ob;p->show();或(*p).show();也可以用對象指針訪問對象數(shù)組,對象可以作為函數(shù)參數(shù),對象指針也可以18、指向類組員的指針:通過指向組員的指針只能訪問公有組員指向類的非靜態(tài)組員的指針指向公有數(shù)據(jù)組員的指針:類型闡明符類名::*數(shù)據(jù)組員指針名;闡明指針應當指向哪個組員:指針名=&類名::數(shù)據(jù)組員名;通過對象名(或?qū)ο笾羔槪┡c組員指針結(jié)合來訪問數(shù)據(jù)組員:對象名.*類組員指針名或:對象指針名->*類組員指針名申明指向公有函數(shù)組員的指針:類型闡明符(類名::*指針名)(參數(shù)表);初始化:指針名=類名::函數(shù)組員名;通過對象名(或?qū)ο笾羔槪┡c組員指針結(jié)合來訪問函數(shù)組員:(對象名.*類組員指針名)(參數(shù)表)或:(對象指針名->*類組員指針名)(參數(shù)表)指向類的靜態(tài)組員的指針對類的靜態(tài)組員的訪問不依賴于對象,可以用一般的指針來指向和訪問靜態(tài)組員19、靜態(tài)組員靜態(tài)數(shù)據(jù)組員用關鍵字static申明,該類的所有對象維護該組員的同一種拷貝,必須在類外定義和初始化,用(::)來指明所屬的類。初始化格式:數(shù)據(jù)類型類名::靜態(tài)數(shù)據(jù)組員名=值;靜態(tài)數(shù)據(jù)屬于整個類,因此既可以通過某個對象,或?qū)ο笾羔樔ピL問,也可以使用類名::靜態(tài)數(shù)據(jù)組員名格式去訪問它。靜態(tài)組員函數(shù)一般來說,靜態(tài)組員函數(shù)只能引用屬于該類的靜態(tài)數(shù)據(jù)組員或靜態(tài)組員函數(shù)。靜態(tài)組員函數(shù)沒有this指針類外代碼可以使用類名和作用域操作符來調(diào)用靜態(tài)組員函數(shù)。如類名::靜態(tài)組員函數(shù)名(實參表)或者對象。靜態(tài)組員函數(shù)名(實參表)或?qū)ο笾羔?〉靜態(tài)組員函數(shù)名(實參表)如某類A:classA{private:staticinttotalW;intw;public:A(intm){
w=m;
totalW+=m;}~A(){totalW-=w;}staticintgetT(){returntotalW;}};intA::totalW=0;voidmain(){Aal(50);cout<<A::getT()<<endl;Aa2(100);cout<<a2.getT()<<endl;}20、友元友元是C++提供的一種破壞數(shù)據(jù)封裝和數(shù)據(jù)隱藏的機制。提高程序運行效率友元函數(shù)不是目前類的組員函數(shù),而是對立于目前類的外部函數(shù),它可以訪問該類的所有組員,包括公有,私有,受保護。友元函數(shù)不是類的組員,因此沒有this指針,它不能直接引用對象組員的名字,它必須通過入口參數(shù)傳遞進來的對象名或?qū)ο笾羔榿硪迷搶ο蟮慕M員。如某類girl的友元函數(shù)disp格式:voiddisp(girl&g);友元組員一種類的組員函數(shù)作為另一種類的友元,它既可以訪問本類的所有組員,還可以訪問friend申明所在類的所有組員友元類若一種類為另一種類的友元,則此類的所有組員都能訪問對方類的私有組員。友元關系是單向的,不具有互換性和傳遞性21、派生類繼承的目的:實現(xiàn)代碼重用。派生的目的:當新的問題出現(xiàn),原有程序無法處理(或不能完全處理)時,需要對原有程序進行改造。派生類的申明class派生類名:繼承方式基類名{組員申明;};繼承方式:三種繼承方式(省略默認為私有繼承),公有繼承,私有繼承,保護繼承不一樣繼承方式的影響重要體目前:內(nèi)部訪問:派生類組員對基類組員的訪問權限對象訪問:通過派生類對象對基類組員的訪問權限在派生類中可以直接訪問的是基類的公有組員和保護組員公有繼承(public)基類的public和protected組員的訪問屬性在派生類中保持不變,但基類的private組員不可直接訪問。派生類中的組員函數(shù)可以直接訪問基類中的public和protected組員,但不能直接訪問基類的private組員。通過派生類的對象只能訪問基類的public組員。私有繼承(private)基類的public和protected組員都以private身份出目前派生類中,但基類的private組員不可直接訪問。派生類中的組員函數(shù)可以直接訪問基類中的public和protected組員,但不能直接訪問基類的private組員。通過派生類的對象不能直接訪問基類中的任何組員。保護繼承(protected)基類的public和protected組員都以protected身份出目前派生類中,但基類的private組員不可直接訪問。派生類中的組員函數(shù)可以直接訪問基類中的public和protected組員,但不能直接訪問基類的private組員。通過派生類的對象不能直接訪問基類中的任何組員22、類型兼容規(guī)則一種公有派生類的對象在使用上可以被當作基類的對象,反之則嚴禁。詳細表目前:派生類的對象可以被賦值給基類對象。派生類的對象可以初始化基類的引用。指向基類的指針也可以指向派生類。通過基類對象名、指針只能使用從基類繼承的組員23、多繼承時派生類的申明class派生類名:繼承方式1基類名1,繼承方式2基類名2,...{組員申明;}注意:每一種“繼承方式”,只用于限制對緊隨其后之基類的繼承。24、繼承時的構造函數(shù)基類的構造函數(shù)不被繼承,派生類中需要申明自己的構造函數(shù)。申明構造函數(shù)時,只需要對本類中新增組員進行初始化,對繼承來的基類組員的初始化,自動調(diào)用基類構造函數(shù)完畢。派生類的構造函數(shù)需要給基類的構造函數(shù)傳遞參數(shù),要看詳細狀況在類繼承過程中,當基類只有帶默認值的有參構造函數(shù)時,派生類的構造函數(shù)也許為:默認構造函數(shù),不帶參數(shù)構造函數(shù),帶參數(shù)構造函數(shù);當基類只有不帶默認值的有參構造函數(shù)時,派生類必須有構造函數(shù)單一繼承時的構造函數(shù)派生類名::派生類名(基類所需的形參,本類組員所需的形參):基類名(參數(shù)表){本類組員初始化賦值語句;};多繼承且有內(nèi)嵌對象時的構造函數(shù)派生類名::派生類名(基類1形參,基類2形參,...基類n形參,本類形參):基類名1(參數(shù)),基類名2(參數(shù)),...基類名n(參數(shù)),內(nèi)嵌對象數(shù)據(jù)組員的初始化{本類組員初始化賦值語句;};構造函數(shù)的調(diào)用次序1.調(diào)用基類構造函數(shù),調(diào)用次序按照它們被繼承時申明的次序(從左向右)。2.調(diào)用內(nèi)嵌組員對象的構造函數(shù),調(diào)用次序按照它們在類中申明的次序。3.派生類的構造函數(shù)體中的內(nèi)容。25、繼承時的析構函數(shù)析構函數(shù)也不被繼承,派生類自行申明申明措施與一般(無繼承關系時)類的析構函數(shù)相似。不需要顯式地調(diào)用基類的析構函數(shù),系統(tǒng)會自動隱式調(diào)用。析構函數(shù)的調(diào)用次序與構造函數(shù)相反。26、虛基類用于有共同基類的場所以virtual修飾闡明基類例:classB1:virtualpublicB27、多態(tài)多態(tài)的分類:參數(shù)多態(tài),包括多態(tài),重載多態(tài)和強制多態(tài)多態(tài)的實現(xiàn):函數(shù)模板和類模板,虛函數(shù),函數(shù)重載、運算符重載虛函數(shù)虛函數(shù)是動態(tài)綁定的基礎,實現(xiàn)多態(tài)的重要手段。定義在基類中進行,在類的申明中,在函數(shù)原型之前寫virtual。virtual只用來闡明類申明中的原型,不能用在函數(shù)實現(xiàn)時。具有繼承性,基類中申明了虛函數(shù),派生類中無論與否闡明,同原型函數(shù)都自動為虛函數(shù)。在派生類中重新定義時,其函數(shù)原型都必須和基類中的原型完全相似。調(diào)用方式:通過基類指針或引用,執(zhí)行時會根據(jù)指針指向的對象的類,決定調(diào)用哪個函數(shù)。不能是友元函數(shù),不能是靜態(tài)組員函數(shù);不能是內(nèi)聯(lián)函數(shù);不能是構造函數(shù);可以是析構函數(shù)。規(guī)定會分析具有虛函數(shù)的程序運行成果純虛函數(shù)是在基類中闡明的虛函數(shù),它在該基類中沒有定義,但規(guī)定在它的派生類中必須定義自己的版本,或重新闡明為純虛函數(shù):virtual函數(shù)類型函數(shù)名(參數(shù)表)=0;申明為純虛函數(shù)后在基類中就不再給出函數(shù)實現(xiàn)部分,函數(shù)體有派生類給出。帶有純虛函數(shù)的類稱為抽象類
溫馨提示
- 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至2030年中國搖椅配件數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國快固化浸漬樹脂數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國廢棉處理系統(tǒng)數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國圓線數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國雙玻璃絲包扁鋁線數(shù)據(jù)監(jiān)測研究報告
- 2025年中國矩形補償器市場調(diào)查研究報告
- 2025年中國推拉式圓形電連接器市場調(diào)查研究報告
- 2025年中國收銀臺小貨架市場調(diào)查研究報告
- 海南鋼橋貝雷片施工方案
- 2025年中國雙軸珠銅輪市場調(diào)查研究報告
- 學校托管工作方案
- 腎性高血壓的護理查房
- 醫(yī)療巡視與巡查制度
- 蘇教版八年級數(shù)學上冊期末試卷及答案【完美版】
- 法院拍賣議價協(xié)議書
- 第11課 社會歷史的主體-【中職專用】2024年中職思想政治《哲學與人生》金牌課件(高教版2023·基礎模塊)
- 六年級成長冊課件
- 大學創(chuàng)意寫作(葛紅兵第二版)課件全套 第1-8章 科學活動與科技結(jié)構-廣告文案與軟文
- 2021年人教版八年級物理上冊期末考試卷(完美版)
- TB 10009-2016 鐵路電力牽引供電設計規(guī)范
- 2024年東南亞雞蛋分級包裝設備市場深度研究及預測報告
評論
0/150
提交評論