




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第C++分析類的對象作類成員調(diào)用構(gòu)造與析構(gòu)函數(shù)及靜態(tài)成員目錄類對象作為成員靜態(tài)成員定義和分類靜態(tài)成員變量靜態(tài)成員函數(shù)總結(jié)
類對象作為成員
C++類中的成員可以是另一個類的對象,我們稱該成員為對象成員
例如:
classPhone{}
classPerson
Phonep;
}
tips:當(dāng)類中成員是其他類對象時,我們稱該成員為對象成員
Person類中有對象p作為成員,Phone為對象成員,那么當(dāng)創(chuàng)建Person對象時,Phone與Person的構(gòu)造和析構(gòu)的順序是誰先誰后?
那讓我們在兩個類中加上一些輸出語句做提示就好了,可以清晰的看到構(gòu)造和析構(gòu)的順序。
示例:
#includeiostream
usingnamespacestd;
//類對象作為類成員
classPhone
public:
Phone(stringP_name)
p_name=P_name;
cout"Phone類有參構(gòu)造"endl;
~Phone()
cout"Phone析構(gòu)"endl;
stringp_name;
classPerson
public:
Person(stringm_Name,stringp_Name):m_name(m_Name),m_PName(p_Name){
cout"Person構(gòu)造"endl;}//初始化列表
~Person()
cout"Person析構(gòu)"endl;
stringm_name;
Phonem_PName;
voidtest01()
Personp1("張三","華為nova7");
Personp3(p1);//調(diào)用默認(rèn)拷貝構(gòu)造函數(shù)
p3.m_name="李白";p3.m_PName.p_name="iphoneMAX";
coutp1.m_name"拿著"p1.m_PName.p_nameendl;
coutp3.m_name"拿著"p3.m_PName.p_nameendl;
intmain()
test01();
}
從結(jié)果圖中看出同時調(diào)用有參構(gòu)造的時候,先調(diào)用對象成員的構(gòu)造,再調(diào)用本類構(gòu)造
析構(gòu)的順序相反
靜態(tài)成員
定義和分類
靜態(tài)成員就是在成員變量和成員函數(shù)前加上關(guān)鍵字static,稱為靜態(tài)成員
靜態(tài)成員分為:
靜態(tài)成員變量
所有對象共享同一份數(shù)據(jù)在編譯階段分配內(nèi)存類內(nèi)聲明,類外初始化
靜態(tài)成員函數(shù)
所有對象共享同一個函數(shù)靜態(tài)成員函數(shù)只能訪問靜態(tài)成員變量
靜態(tài)成員變量
classPerson
public:
staticintm_A;
private:
staticintm_B;
intPerson::m_A=10;
intPerson::m_B=10;
voidtest01()
//靜態(tài)成員變量兩種訪問方式
//1、通過對象
Personp1;
p1.m_A=100;
cout"p1.m_A="p1.m_Aendl;
Personp2;
p2.m_A=200;
cout"p1.m_A="p1.m_Aendl;//共享同一份數(shù)據(jù)
cout"p2.m_A="p2.m_Aendl;
//2、通過類名
cout"m_A="Person::m_Aendl;
//cout"m_B="Person::m_Bendl;//私有權(quán)限訪問不到
intmain(){
test01();
system("pause");
return0;
}
靜態(tài)成員變量也是有訪問權(quán)限的,無論是public或者是private在類內(nèi)都可以被訪問,m_A和m_B在類內(nèi)定義在類外初始化,還記得類外初始化嗎,就是變量類型加類名加::變量名=值;同時可以通過對象和類名兩種方式訪問靜態(tài)成員變量。
靜態(tài)成員函數(shù)
classPerson
public:
intgetB()
returnm_B;
staticintm_A;
intm_C;//非靜態(tài)成員變量
//靜態(tài)成員函數(shù)
staticvoidfunc()
m_A=100;
//m_C=20;
cout"staticvoidfunc的調(diào)用"endl;
private:
staticintm_B;
staticvoidfunc2()
cout"staticvoidfunc的調(diào)用"endl;
intPerson::m_A=100;//類外外面初始化
intPerson::m_B=200;
voidtest03()
//調(diào)用方式有兩種
//1、通過對象調(diào)用
Personp;
p.func();
//通過類名調(diào)用
Person::func();
//類外訪問不到靜態(tài)成員函數(shù),靜態(tài)成員函數(shù)也有訪問權(quán)限
}
靜態(tài)成員函數(shù)也有權(quán)限的控制,代碼里寫了func是公共權(quán)限,func2是私有權(quán)限;靜態(tài)成員函數(shù)也有對象調(diào)用和類名調(diào)用兩種方式,但是都無法調(diào)用私有權(quán)限的靜態(tài)成員函數(shù)。
注意事項:靜態(tài)成員函數(shù)不可以訪問非靜態(tài)成員變量,無法區(qū)分到底是哪個對象的屬
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國低功耗LED燈行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報告
- 健康知識講座課件圖片
- 健康看電視講課課件
- 醫(yī)藥安全政策解讀課件
- 2024年疊片機資金需求報告代可行性研究報告
- 2024年食品冷凍機械投資申請報告代可行性研究報告
- 蕭山區(qū)小區(qū)監(jiān)控管理辦法
- 蛋糕廠生產(chǎn)管理辦法標(biāo)準(zhǔn)
- 衡山縣村民建房管理辦法
- 健康活到百歲課件
- 非煤礦山礦石運輸車輛安全協(xié)議書
- 東北林業(yè)大學(xué)20-21高數(shù)A2期末考試含答案
- 暨南大學(xué)《微觀經(jīng)濟學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 原理及適用范圍 火試金法
- GB/T 44570-2024塑料制品聚碳酸酯板材
- 職工宿舍衛(wèi)生制度
- 新疆2020年中考英語真題(含答案)
- 北京市東城區(qū)東直門中學(xué)2024-2025學(xué)年七年級上學(xué)期分班考數(shù)學(xué)試卷
- 內(nèi)蒙古地區(qū)歷年中考語文現(xiàn)代文閱讀之非連續(xù)性文本閱讀14篇(含答案)(2003-2023)
- 國家開放大學(xué)本科《理工英語3》一平臺機考總題庫2025珍藏版
- 2024北京海淀區(qū)初二(下)期末物理及答案
評論
0/150
提交評論