




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第C++深入分析講解類的知識(shí)點(diǎn)目錄知識(shí)點(diǎn)引入類的初識(shí)1、封裝2、權(quán)限3、類的定義(定義類型)4、類的成員函數(shù)與類中聲明及類外定義Person類的設(shè)計(jì)設(shè)計(jì)立方體類點(diǎn)Point和圓Circle的關(guān)系
知識(shí)點(diǎn)引入
C語言中數(shù)據(jù)和方法是獨(dú)立:
//c語言的思想:數(shù)據(jù)方法分開
typedefstruct
charname[32];
intage;
}Person;
typedefstruct
charname[32];
intage;
inttype;
}Dog;
voidPersonEat(Person*p)
coutp-name"正在吃飯"endl;
voidDogEat(Dog*d)
coutd-name"正在吃狗糧,汪汪"endl;
voidtest01()
Personperson={"老王",43};
Dogdog={"旺財(cái)",6};
PersonEat(person);
DogEat(dog);
//出現(xiàn)一個(gè)問題(數(shù)據(jù)方法獨(dú)立容易造成方法調(diào)用錯(cuò)誤數(shù)據(jù))
DogEat((Dog*)person);
}
類的初識(shí)
1、封裝
把變量(屬性)和函數(shù)(操作)合成一個(gè)整體,封裝在一個(gè)類中
對變量和函數(shù)進(jìn)行訪問控制(公有、私有、保護(hù))
類的封裝:將數(shù)據(jù)和方法封裝在一起加以權(quán)限區(qū)分用戶只能通過公共方法訪問私有數(shù)據(jù)。
2、權(quán)限
private私有public公有protected保護(hù)
private私有:類外部不可直接訪問私有數(shù)據(jù)類內(nèi)部可以訪問
protected保護(hù):類外部不可直接訪問私有數(shù)據(jù)類內(nèi)部可以訪問
public公有:類外部可以訪問私有數(shù)據(jù)類內(nèi)部可以訪問
權(quán)限只是針對類的外部,類的內(nèi)部沒有權(quán)限之分
class類名{//抽象的概念系統(tǒng)不會(huì)為其分配空間
private://私有類的外部不可直接訪問
protected://保護(hù)類的外部不可直接訪問
數(shù)據(jù)
public://公有類的外部可以直接訪問
方法
//在類的內(nèi)部沒有權(quán)限之分都可以相互訪問
};
案例:
classPerson//抽象的概念
{//類的內(nèi)部
private:
intm_money;//私有數(shù)據(jù)
protected:
intm_age;
public:
voiddese()
m_money=100;
m_age=18;
cout"我有房有車又年輕"m_age"歲又有錢"m_money"萬美金我就愛嘚瑟"endl;
voidtest01()
//用類去實(shí)例化一個(gè)對象(就是用Person定義一個(gè)變量)
Personlucy;
//cout"兄弟你的錢:"lucy.m_moneyendl;//err內(nèi)的外部不可訪問
//cout"兄弟你的年齡:"lucy.m_ageendl;//err內(nèi)的外部不可訪問
lucy.dese();//ok公有的類的外部可用訪問
//privateprotected雖然是私有、保護(hù)的類外不可訪問但是用戶可以借助public公有的方法
//間接的訪問私有、保護(hù)的數(shù)據(jù)
}
class默認(rèn)是私有的數(shù)據(jù)私有方法公有用戶就可以借助公有方法間接的操作私有數(shù)據(jù)
3、類的定義(定義類型)
關(guān)鍵字class
#includeiostream
usingnamespacestd;
//類的定義:是不占空間只有用類實(shí)例化對象的時(shí)候系統(tǒng)為對象開辟空間
classData
private://私有
//inta=10;//err定義類的時(shí)候盡量不要給成員賦值
inta;//成員數(shù)據(jù)
protected://保護(hù)
intb;
public://公有
intc;
//成員函數(shù)
voiddata_show(void)
//類的內(nèi)部:沒有權(quán)限區(qū)分
couta","b","cendl;
//類中的數(shù)據(jù)成員擁有獨(dú)立的空間
voidtest01()
//使用Data實(shí)例化一個(gè)對象名為ob的對象
Dataob;
//成員數(shù)據(jù)依賴于對象的
//cout"ob.a="ob.aendl;//erra為私有類外不能直接訪問
//cout"ob.b="ob.bendl;//errb為保護(hù)類外不能直接訪問
cout"ob.c="ob.cendl;//errc為公有類外可以直接訪問
//對象通過公共方法間接調(diào)用私用數(shù)據(jù)
ob.data_show();
intmain(intargc,char*argv[])
test01();
return0;
}
4、類的成員函數(shù)與類中聲明及類外定義
classData2
//默認(rèn)為私有
inta;
public:
//類中聲明類外定義
voidsetA(intv);
intgetA(void);
voidData2::setA(intv)
a=v;
return;
intData2::getA()
returna;
voidtest02()
Data2ob;
ob.setA(100);
cout"a="ob.getA()endl;
}
Person類的設(shè)計(jì)
設(shè)計(jì)一個(gè)Person類型
設(shè)計(jì)一個(gè)Person類,Person類具有name和age屬性,提供初始化函數(shù)(Init),并提供對name和age的讀寫函數(shù)(set,get),但必須確保age的賦值在有效范圍內(nèi)(0-100),超出有效范圍,則拒絕賦值,并提供方法輸出姓名和年齡。
person.h:
#ifndefPERSON_H
#definePERSON_H
//類的頭文件:一般定義成員數(shù)據(jù)聲明成員函數(shù)
classPerson
private:
charm_name[32];
intm_age;
public:
//初始化m_namem_age
voidinit(char*name,intage);
//設(shè)置name
voidsetName(char*name);
//獲取name
char*getName(void);
//設(shè)置age
voidsetAge(intage);
//獲取age
intgetAge(void);
//顯示m_namem_age
voidshowPerons(void);
#endif//PERSON_H
person.cpp:
#include"person.h"
//#includestring.h
#includecstring
#includeiostream
usingnamespacestd;
//定義類的成員函數(shù)
voidPerson::init(char*name,intage)
strcpy(m_name,name);
if(age=0age=100)
m_age=age;
else
cout"年齡輸入非法"endl;
voidPerson::setName(char*name)
strcpy(m_name,name);
return;
char*Person::getName()
returnm_name;
voidPerson::setAge(intage)
if(age=0age=100)
m_age=age;
else
cout"年齡輸入非法"endl;
return;
intPerson::getAge()
returnm_age;
voidPerson::showPerons()
cout"姓名:"m_name",年齡:"m_ageendl;
return;
}
main.cpp
#includeiostream
#include"person.h"
usingnamespacestd;
intmain(intargc,char*argv[])
Personob;
ob.init("lucy",18);
ob.showPerons();
ob.setName("bob");
cout"姓名:"ob.getName()endl;
ob.setAge(19);
cout"年齡:"ob.getAge()endl;
return0;
}
設(shè)計(jì)立方體類
設(shè)計(jì)立方體類(Cube),求出立方體的面積(2ab+2ac+2bc)和體積(a*b*c),分別用全局函數(shù)和成員函數(shù)判斷兩個(gè)立方體是否相等
cube.h
#ifndefCUBE_H
#defineCUBE_H
classCube
private:
intm_l;
intm_w;
intm_h;
public:
voidsetL(intl);
intgetL(void);
voidsetW(intw);
intgetW(void);
voidsetH(inth);
intgetH(void);
intgetS(void);
intgetV(void);
boolcompareCube(Cubeob);
#endif//CUBE_H
cube.cpp
#include"cube.h"
voidCube::setL(intl)
m_l=l;
return;
intCube::getL()
returnm_l;
voidCube::setW(intw)
m_w=w;
return;
intCube::getW()
returnm_w;
voidCube::setH(inth)
m_h=h;
return;
intCube::getH()
returnm_h;
intCube::getS()
return(m_l*m_w+m_w*m_h+m_l*m_h)*2;
intCube::getV()
returnm_l*m_w*m_h;
boolCube::compareCube(Cubeob)
if((m_l==ob.m_l)(m_w==ob.m_w)(m_h==ob.m_h))
returntrue;
else
returnfalse;
}
main.cpp
#includeiostream
#include"cube.h"
usingnamespacestd;
boolmyCompareCube(Cubeob1,Cubeob2)
if((ob1.getL()==ob2.getL())\
(ob1.getW()==ob2.getW())(ob1.getH()==ob2.getH()))
returntrue;
else
returnfalse;
intmain(intargc,char*argv[])
Cubeob1;
ob1.setL(10);
ob1.setW(10);
ob1.setH(10);
cout"面積為:"ob1.getS()endl;
cout"體積為:"ob1.getV()endl;
Cubeob2;
ob2.setL(10);
ob2.setW(20);
ob2.setH(10);
if(pareCube(ob2)==true)
cout"相等"endl;
else
cout"不相等"endl;
if(myCompareCube(ob1,ob2)==true)
cout"相等"endl;
else
cout"不相等"endl;
return0;
}
點(diǎn)Point和圓Circle的關(guān)系
#includeiostream
usingnamespacestd;
classPoint
private:
intm_x;
intm_y;
public:
voidsetX(intx)
m_x=x;
intgetX(void)
returnm_x;
voidsetY(inty)
m_y=y;
intgetY(void)
returnm_y;
classCircle
private:
Pointm_p;
intm_r;
public:
voidsetPoint(intx,inty)
m_p.setX(x);
m_p.setY(y);
voidsetR(intr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 紡織品批發(fā)渠道整合考核試卷
- 計(jì)算機(jī)外設(shè)連接與使用考核試卷
- 小學(xué)班級活動(dòng)課件
- 對講機(jī)租賃考核試卷
- 毛織造品專利布局策略考核試卷
- 電動(dòng)機(jī)檢修與保養(yǎng)方法考核試卷
- 礦山開采對水資源保護(hù)考核試卷
- 數(shù)字智慧方案5468丨全域旅游智能化?業(yè)解決?案
- 畢業(yè)設(shè)計(jì)風(fēng)景園林
- 《NiosII硬件開發(fā)》課件分享
- 《高壓輸電線路巡檢維護(hù)合同》
- 《中國古典文學(xué)中的詠魚詩與生態(tài)文化》論文
- 商品混凝土管理制度
- 輕鋼龍骨隔墻施工方案
- 2025年浙江溫州市公用事業(yè)發(fā)展集團(tuán)有限公司招聘筆試參考題庫附帶答案詳解
- 2025年天津市武清區(qū)國資產(chǎn)經(jīng)營投資限公司面向社會(huì)公開選聘工作人員高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 業(yè)主大會(huì)申請書
- 2025年八人合伙企業(yè)股權(quán)分配協(xié)議書
- (部編版)語文五年級上冊“小古文”閱讀理解訓(xùn)練82篇附參考答案
- DB36-T 422-2024 杉木大徑材培育技術(shù)規(guī)程
- 改革開放史知到智慧樹章節(jié)測試課后答案2024年秋齊魯師范學(xué)院
評論
0/150
提交評論