




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第C++中封裝的含義和簡單實現方式目錄封裝實現封裝屬性class封裝其實封裝并不是編程中的一個思想,對于很多領域來說都是這樣。對于電子器件來說,我們不關心其內部的結構,只在乎該器件能夠實現什么樣的功能。這樣對于顧客來說,不用花時間研究內部的實現過程,而對于商家來說,也可以更好的保護它們的商業秘密。
而對于C++來說也是這樣,借由數據類型也可以實現封裝。這樣做的好處就是對外屏蔽了功能實現,對內開放了數據權限。
C++中的類和對象是經由C中的struct發展而來的,就好像struct是由數組發展而來的一樣。因此我們可以先通過struct實現封裝。
封裝實現
#includeiostream
usingstd::cout;
usingstd::endl;
typedefstructcomplex
intx;
inty;
}COMP;
voidinit(COMPtmp,intx,inty)
tmp.x=x;
tmp.y=y;
COMP*operator+(COMPtmp1,COMPtmp2)
COMP*p=static_castCOMP*(newCOMP);
p-x=tmp1.x+tmp2.x;
p-y=tmp1.y+tmp2.y;
returnp;
COMP*operator-(COMPtmp1,COMPtmp2)
COMP*p=static_castCOMP*(newCOMP);
p-x=tmp1.x-tmp2.x;
p-y=tmp1.y-tmp2.y;
returnp;
COMP*operator*(COMPtmp1,COMPtmp2)
COMP*p=static_castCOMP*(newCOMP);
p-x=tmp1.x*tmp2.x-tmp1.y*tmp2.y;
p-y=tmp1.x*tmp2.y+tmp1.y*tmp2.x;
returnp;
intmain()
COMPx,y;
init(x,1,2);
init(y,3,4);
coutx.x""x.yendl;
couty.x""y.yendl;
COMP*z;
z=x+y;
coutz-x""z-yendl;
deletez;
z=x-y;
coutz-x""z-yendl;
deletez;
z=x*y;
coutz-x""z-yendl;
deletez;
return0;
}
結果為:
12
34
46
-2-2
-510
上面的程序使用struct構建了類似復數的結果,并使用運算符重載實現了復數的加、減、乘運算。這樣如果我們要進行復數的運算的話,可以直接使用+-*而不用具體關心內部的實現過程,因為我們在意的只是結果的正確性。
封裝屬性
封裝的作用就像之前提到的那樣:對外提供接口,對內提供數據。
雖然上邊的函數在全局構建了接口函數,但是卻也暴露了函數的實現過程,并且我們還能夠在外部直接訪問struct內的數據,這并不是我們想要的封裝形式。這是由struct的性質決定的,在C++中,提供了class的形式實現整個的封裝過程。
struct和class的不同在于,struct中的數據和方法都是public的,而class中的數據和方法卻是可以自定義的:
屬性內部外部publicyesyes
protectedyesnoprivateyesno
protected和private的區別在繼承形式上。
class封裝
對于上邊的complex,如果使用class來封裝:
#includeiostream
usingstd::cout;
usingstd::endl;
classcomplex
public:
complex()
this-x=0;
this-y=0;
complex(intx,inty):x(x),y(y){}
complex*operator+(complextmp)
complex*p=static_castcomplex*(newcomplex);
p-x=this-x+tmp.x;
p-y=this-y+tmp.y;
returnp;
complex*operator-(complextmp)
complex*p=static_castcomplex*(newcomplex);
p-x=this-x-tmp.x;
p-y=this-y-tmp.y;
returnp;
complex*operator*(complextmp)
complex*p=static_castcomplex*(newcomplex);
p-x=this-x*tmp.x-this-y*tmp.y;
p-y
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園家長學校評價反饋職責
- 2025年行政人事部崗位職責梳理年終總結及工作計劃
- 幼兒園工會職責與家長溝通機制
- 2024-2025學年度第一學期學校安全隱患排查計劃
- 學校健康觀察室疫情排查職責他
- 解放思想推動養老服務創新的個人心得體會
- 中小企業發展調研報告范文
- 2025年八年級班主任班主任自我提升計劃范文
- 消防工程確保醫療機構安全生產的技術組織措施
- 剪紙文化非遺傳承計劃
- 635MPa級熱軋帶肋高強鋼筋應用技術規程
- 人教版語文四年級上冊全冊知識點
- 公對公咨詢居間協議書范本
- 隧道鋼拱架加工
- 國開電大《鋼結構(本)》階段性學習測驗1-4
- 中專《電工基礎》課程標準
- 大學《麻醉學》期末復習重點及習題解析(名詞解釋、選擇、填空、簡答、病例分析)
- 他汀不耐受的臨床診斷與處理中國專家共識(2024)解讀課件
- 云南省玉溪市(2024年-2025年小學六年級語文)統編版小升初真題((上下)學期)試卷及答案
- 公安網絡安全培訓
- 2024年7月國家開放大學法學本科《知識產權法》期末考試試題及答案
評論
0/150
提交評論