C類與繼承知識點(diǎn)_第1頁
C類與繼承知識點(diǎn)_第2頁
C類與繼承知識點(diǎn)_第3頁
C類與繼承知識點(diǎn)_第4頁
C類與繼承知識點(diǎn)_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

總結(jié)類與繼承知識點(diǎn)第三章類和對象1.類①類定義的關(guān)鍵字是class;②類的訪問限定符包括public、private和protected;③類成員默認(rèn)的訪問方式是private;④訪問限定符在類中無先后次序,各限定符允許多次出現(xiàn);⑤類的數(shù)據(jù)成員通常指定為私有成員;函數(shù)成員通常指定為公有成員;⑥指定為公有的類成員可以在類對象所在域中的任何位置以“對象名.成員變量”形式訪問;⑦類的私有和保護(hù)只能被該類的成員函數(shù)或友元函數(shù)訪問。2.函數(shù)原型三要素:函數(shù)返回類型;函數(shù)名;形參列表(至少要有形參類型)eg;intf(int,int,int)3.拷貝構(gòu)造函數(shù)(復(fù)制構(gòu)造函數(shù))的三種調(diào)用情況:當(dāng)類的一個(gè)對象去初始化該類的另一個(gè)對象時(shí);如果函數(shù)的形參是類的對象,調(diào)用函數(shù)進(jìn)行形參和實(shí)參結(jié)合時(shí),形參建立;如果函數(shù)的返回類型是類類型,函數(shù)調(diào)用完成返回時(shí),return語句返回的對象值會初始化訪問該函數(shù)的匿名對象;4.析構(gòu)函數(shù)的調(diào)用情況當(dāng)類對象過期時(shí),程序?qū)⒆詣诱{(diào)用析構(gòu)函數(shù),不用再代碼中顯示調(diào)用5.對象不能調(diào)用構(gòu)造函數(shù),因?yàn)闃?gòu)造函數(shù)是用來創(chuàng)建對象的,之前不存在對象6.默認(rèn)構(gòu)造函數(shù)的兩種形式:參數(shù)都有默認(rèn)值;無參數(shù)7.當(dāng)默認(rèn)構(gòu)造函數(shù)無參數(shù)時(shí),私有成員將會是隨機(jī)值;8.構(gòu)造函數(shù)的參數(shù)名不能與類成員相同,參數(shù)表示的不是類成員,而是賦給類成員的值9.構(gòu)造函數(shù)無返回類型、可帶參數(shù)、可重載;析構(gòu)函數(shù)無返回類型、不可帶參數(shù)、不可重載。10.當(dāng)一個(gè)對象定義時(shí),C++編譯系統(tǒng)自動調(diào)用構(gòu)造函數(shù)建立該對象并進(jìn)行初始化;當(dāng)一個(gè)對象的生命周期結(jié)束時(shí),C++編譯系統(tǒng)自動調(diào)用析構(gòu)函數(shù)注銷該對象并進(jìn)行善后工作;11.如果一個(gè)類中沒有定義拷貝構(gòu)造函數(shù)時(shí),系統(tǒng)將自動生成一個(gè)默認(rèn)的;拷貝構(gòu)造函數(shù)只有一個(gè)參數(shù),并且是該類對象的引用;拷貝構(gòu)造函數(shù)的名字與類同名,并且不被指定返回類型;拷貝構(gòu)造函數(shù)是一種成員函數(shù)。12.構(gòu)造函數(shù)的任務(wù)是建立對象,類中可以有多個(gè)構(gòu)造函數(shù),它們由參數(shù)區(qū)分。如果類說明中沒有給出構(gòu)造函數(shù),則C++編譯器會提供構(gòu)造函數(shù),該函數(shù)不完成對象初始化工作。13.復(fù)制構(gòu)造函數(shù)的參數(shù)是對象的復(fù)制,當(dāng)程序沒有給出復(fù)制構(gòu)造函數(shù)時(shí),編譯系統(tǒng)會提供默認(rèn)復(fù)制構(gòu)造函數(shù),完成類對象的復(fù)制。復(fù)制構(gòu)造函數(shù)被調(diào)用情況有3種。14.析構(gòu)函數(shù)在對象釋放時(shí)被自動調(diào)用。類中沒有定義析構(gòu)函數(shù)時(shí),編譯系統(tǒng)會提供一個(gè)默認(rèn)的析構(gòu)函數(shù)。該函數(shù)不完成具體對象的清理工作。15.對象初始化發(fā)生的三個(gè)地方:定義對象時(shí);函數(shù)調(diào)用時(shí)的值傳送,即形參被建立,存在初始化函數(shù)的返回類型為類類型時(shí),return語句返回的對象值將被用于初始化調(diào)用該函數(shù)的匿名對象16.對象成員一定要通過初始化表來初始化;初始化的順序是按在類中聲明的順序進(jìn)行,與初始化表中出現(xiàn)的順序無關(guān)17.析構(gòu)函數(shù)的調(diào)用順序與構(gòu)造函數(shù)的調(diào)用順序相反18.靜態(tài)成員:staticinti;staticintf(inti)靜態(tài)數(shù)據(jù)成員為所在類的所有對象共享,可以修改;靜態(tài)數(shù)據(jù)成員一定是在類中聲明,類外初始化;靜態(tài)成員函數(shù)只能訪問該類的靜態(tài)數(shù)據(jù)成員或靜態(tài)成員函數(shù);④靜態(tài)成員函數(shù)沒有this指針;⑤以類名+作用域運(yùn)算符的形式訪問靜態(tài)成員函數(shù);19.常量成員:constint&m;(常引用)constintj;(常變量)constCPointp;(常對象)voidbuy()const;(常量成員函數(shù))常量數(shù)據(jù)成員的初始化必須在初始化表中完成,不可修改常量成員函數(shù)中,不能有修改類中數(shù)據(jù)成員的語句(可以訪問),也不能訪問類中的非常量成員函數(shù)20.友元三種形式:外部函數(shù)可以訪問A類數(shù)據(jù)成員A類中的一個(gè)成員函數(shù)可以訪問B類數(shù)據(jù)成員A類中所有的成員函數(shù)都可以訪問B類數(shù)據(jù)成員21.友元函數(shù)是非成員函數(shù),在類體內(nèi)說明了,在類體外定義,定義和調(diào)用等同于一般的普通函數(shù);有和成員函數(shù)相同的訪問權(quán)限;由于它可以直接訪問類的私有成員,因此破壞了類的封裝性和隱藏性,盡量少用;22.this指針是一個(gè)隱含在成員函數(shù)中的特殊指針,用于指向正在被成員函數(shù)操作的對象非靜態(tài)成員函數(shù)指針在主程序中的定義形式:double(CPoint::*pFun)()=CPoint::getx;修改函數(shù)指針的指向:pFun=CPoint::gety;調(diào)用函數(shù)指針的形式:cout<<(p1.*pFun)()<<endl;或cout<<(p1->*pFun)()<<endl;靜態(tài)成員函數(shù)指針在主程序中的定義形式:int(*pFun)()=CPoint::ObjectNum;調(diào)用函數(shù)指針的形式:cout<<(*pFun)()<<endl;或cout<<pFun()<<endl;23.函數(shù)的重載,函數(shù)名相同,參數(shù)類型不相同或者參數(shù)個(gè)數(shù)不相同;24.深拷貝使得不同的對象擁有不同的資源;第五章繼承派生類中繼承的基類成員的訪問權(quán)限到派生類受繼承方式影響;繼承的三種方式:公有繼承,私有繼承,保護(hù)繼承;默認(rèn)繼承方式為private;①共同點(diǎn):基類的private成員成為派生類的隱藏的私有成員,稱為不能直接訪問成員;②區(qū)別:私有繼承,基類的public、protected成員在派生類中作為private成員;公有繼承,基類的public、protected成員在派生類中訪問屬性不變;保護(hù)繼承,基類的public、protected成員在派生類中作為protected成員;派生類可以只從一個(gè)基類中派生,也可以從多個(gè)基類中派生;單繼承:從一個(gè)基類中派生的繼承方式;多繼承:從多個(gè)基類中派生的繼承方式;一個(gè)派生類可以作為另一個(gè)派生類的基類。無論是單繼承還是多繼承,派生類至少有一個(gè)基類;派生類的成員除了它自己的成員外,還包含了它的基類成員;基類的構(gòu)造函數(shù)、析構(gòu)函數(shù)和友元函數(shù)是不能被派生類繼承的;派生類的構(gòu)造函數(shù)的2項(xiàng)工作:①完成基類數(shù)據(jù)成員的初始化;②完成基類中新增數(shù)據(jù)成員化;派生類構(gòu)造函數(shù)的執(zhí)行順序:(1)執(zhí)行所有基類的構(gòu)造函數(shù)(順序按定義派生類時(shí)指定的各基類順序);(2)執(zhí)行對象成員所在類的構(gòu)造函數(shù)(順序按照他們在類中的聲明順序);(3)最后執(zhí)行派生類構(gòu)造函數(shù)體中的內(nèi)容;9.派生類對象初始化規(guī)則:(1)從基類繼承下來的數(shù)據(jù)成員的初始化由基類的構(gòu)造函數(shù)完成(2)對象成員的初始化由其所屬類的構(gòu)造函數(shù)完成(3)派生類新添加的數(shù)據(jù)成員的初始化由派生類的構(gòu)造函數(shù)完成(4)派生類的構(gòu)造函數(shù)必須使用初始化表10.派生類對象的數(shù)據(jù)成員的初始化順序:(1)初始化從基類繼承的對象成員(2)初始化從基類繼承的其他數(shù)據(jù)成員(3)初始化派生類的對象成員(4)初始化派生類的其他數(shù)據(jù)成員11.水平訪問:主函數(shù)中類實(shí)例訪問基類或派生類的公有成員;垂直訪問:派生類中成員函數(shù)對基類成員的訪問;12.成員函數(shù)的同名覆蓋:當(dāng)派生類成員函數(shù)原型和基類的某個(gè)成員函數(shù)相同時(shí),若使用派生類對象調(diào)用函數(shù),派生類成員函數(shù)將覆蓋基類的同名函數(shù);13.賦值兼容規(guī)則:指在需要基類對象的任何地方都可以使用公有派生類的對象來替代;(前提:采用公有繼承)替代包括以下情況:(1)派生類對象可以賦值給基類對象(2)派生類對象可以初始化基類的引用(3)派生類對象的地址可以賦給指向基類的指針14.虛基類:①概念:在多重繼承(多繼承)中,如果多條繼承路徑上有一個(gè)公共的基類,則在這些路徑的匯合點(diǎn)上的派生類會產(chǎn)生來自不同路徑的公共基類的多個(gè)拷貝,如果用virtual把公共基類定義成虛基類,則只會保留公共基類的一個(gè)拷貝;這種派生類對基類只產(chǎn)生一個(gè)拷貝的繼承方式叫做共享繼承;②作用:引進(jìn)虛基類的目的是為了解決二義性問題,使得公共基類在它的派生類對象中只產(chǎn)生一個(gè)基類子對象;15.多繼承派生類構(gòu)造函數(shù)構(gòu)造對象時(shí),構(gòu)造函數(shù)的調(diào)順序是:①虛基類的構(gòu)造函數(shù);

溫馨提示

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

評論

0/150

提交評論