版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第5章特殊函數(shù)和成員5.1對象成員的初始化類的定義:5.1對象成員的初始化5.1對象成員的初始化5.1對象成員的初始化示例【5.1】double變成了其他類#include<iostream>usingnamespacestd;classobject{private: intval;public: object():val(0) {cout<<"Defaultconstructorforobject"<<endl;} object(inti):val(i) { cout<<"constructorforobject"<<val<<endl; }~object(){cout<<"Destructorforobject"<<val<<endl;}};classcontainer{private: objectone; objecttwo; intdata;public: container():data() {cout<<"Defaultconstructorforcontainer"<<endl;} container(inti,intj,intk); ~container() { cout<<"Destructorforcontainer"<<data<<endl; }};container::container(inti,intj,intk):two(i),one(j){data=k;cout<<"Constructorforcontainer"<<data<<endl;}voidmain(){containerobj,anobj(5,6,10);}5.2靜態(tài)成員成員定義時使用了static關(guān)鍵字1)靜態(tài)成員變量的初始化只能在類外進行.2)類中的任何成員函數(shù)都可訪問靜態(tài)成員變量3)訪問靜態(tài)成員時,一般加上類名限定.4)靜態(tài)成員變量是類的成員,不是對象的成員.5)對象未建立之前靜態(tài)成員已經(jīng)存在.6)靜態(tài)成員沒有this指針,除非使用引用方式否則不能存取類的成員.classtest{staticintx;intn;public: test(){} test(inta,intb){x=a;n=b;} staticintfunc(){returnx;} staticvoidsfunc(test&r,inta){r.n=a;} intgetn(){returnn;}};inttest::x=25;#include<iostream>usingnamespacestd;voidmain(){ cout<<test::func(); testb,c; b.sfunc(b,58); cout<<""<<b.getn(); cout<<""<<b.func(); cout<<""<<c.func(); testa(24,56); cout<<""<<a.func()<<""<<b.func()<<""<<c.func()<<endl;}classtest{public: staticintx; intn; test(){} test(inta,intb){x=a;n=b;}};inttest::x=30;#include<iostream>usingnamespacestd;voidmain(){testa(25,46),b(35,27);cout<<a.x<<endl;cout<<b.x<<endl;}輸出結(jié)果:35355.3友元函數(shù)可以實現(xiàn)兩個類之間無限制的存取另一個類的成員.友元函數(shù)可以訪問私有成員,公有成員和保護成員.友元函數(shù)可以是一個類或函數(shù).友元需通過對象來使用類的成員.友元的三種形式:1)普通函數(shù)作一個類的友元2)a類的成員函數(shù)作b類的友元3)a類作為b類的友元5.3友元函數(shù)1)普通函數(shù)作一個類的友元例5.45.3友元函數(shù)2)a類的成員函數(shù)作b類的友元5.3友元函數(shù)2)a類的成員函數(shù)作b類的友元5.3友元函數(shù)2)a類的成員函數(shù)作b類的友元5.3友元函數(shù)3)a類作b類的友元總結(jié):友元函數(shù)可以實現(xiàn)兩個類之間無限制的存取另一個類的成員.友元函數(shù)可以訪問私有成員,公有成員和保護成員.友元函數(shù)可以是一個類或函數(shù).友元需通過對象來使用類的成員.友元的三種形式:1)普通函數(shù)作一個類的友元2)a類的成員函數(shù)作b類的友元3)a類作為b類的友元5.4const對象const可限定變量、指針、對象、函數(shù)、數(shù)據(jù)成員、成員函數(shù).表示不可改變.1)const成員2)const對象3)const函數(shù)const成員區(qū)別于const變量const變量定義時需要初始化.const成員在構(gòu)造函數(shù)中初始化(初始化列表形式)5.4const對象1)const成員區(qū)別于const變量5.4const對象1)const成員區(qū)別于const變量5.4const對象2)const引用作參數(shù)5.4const對象3)const對象和const函數(shù)const對象只能調(diào)用const成員函數(shù)const函數(shù)中不允許使用改變變量或成員值的語句5.5數(shù)組和類類可定義對象數(shù)組.inta[5];
inta[5]={1,2,3,4,5};pointp[3];pointp[3]={point(1,2),point(3,4),point(5,6)}定義數(shù)組時未初始化調(diào)用point()形式構(gòu)造函數(shù)定義數(shù)組并初始化調(diào)用point(a,b)形式構(gòu)造函數(shù)使用數(shù)組中的元素時利用:point[i]形式Point[i]的使用同普通對象使用方式相同5.5數(shù)組和類類可定義對象數(shù)組,可定義指向?qū)ο蟮闹羔様?shù)組名是數(shù)組在內(nèi)存中的首地址指針可以存放地址可用指針指向數(shù)組通過指針可以使用對象成員p->show()通過指針可以使用對象數(shù)組元素的成員P=a;a[0].show();p->show();5.5數(shù)組和類定義對象的指針數(shù)組int*p;表示定義一個指針變量intp[5];表示定義一個數(shù)組.int*p[5]表示定義一個數(shù)組中有5個元素,每個元素是一個指針.此類數(shù)組稱為指針數(shù)組.point*p;p=newpoint;p=newpoint(1,2);5.5數(shù)組和類定義對象的指針數(shù)組point*p[3];p[0]=newpoint(1,2);p[1]=newpoint(3,4);p[2]=newpoint(5,6);通過p[0]使用p[0]指向的對象.p[0]->show();可通過循環(huán)使用p[i]指向的對象.5.5數(shù)組和類定義指向?qū)ο蟮闹羔様?shù)組,并初始化.point*p[3]={newpoint(1,2),newpoint(3,4),newpoint(5,6)};5.6指向成員函數(shù)的指針函數(shù)被調(diào)用時需要調(diào)入內(nèi)存函數(shù)有地址:存放函數(shù)的內(nèi)存單元的首地址指針可以存放地址存放函數(shù)地址的指針稱為指向函數(shù)的指針定義形式:類型(*指針名)(參數(shù)類型);5.6指向成員函數(shù)的指針intmax(inta,intb){returna>b?a:b;}voidmain(){ int(*p)(int,int); p=max; (*p)(1,2);}5.6指向成員函數(shù)的指針若max函數(shù)是某類A的成員函數(shù)則:intA::max(inta,intb){returna>b?a:b;}voidmain(){ int(A::*p)(int,int);Aa; p=A::max; a.(*p)(1,2);}5.7求解一元二次方程利用C++實現(xiàn)設計類,定義類,定義main函數(shù)定義對象,利用對象調(diào)用成員函數(shù)執(zhí)行設計類類的對象中應能存放相關(guān)數(shù)據(jù):具有數(shù)據(jù)成員a,b,c一元二次方程的三個系數(shù)x1,x2存放求得的方程解delta存放b*b-4*a*c類的對象應能完成計算功能:具有成員函數(shù)1)將數(shù)據(jù)存入數(shù)據(jù)成員的函數(shù)2)顯示結(jié)果的函數(shù)3)計算x1,x2的函數(shù)定義類設計類定義類的成員函數(shù)main函數(shù)main函數(shù)main函數(shù)main函數(shù)main函數(shù)第五章復習構(gòu)造函數(shù)定義:classA{intapublic:
A(intx):a(x){}A(intx){a=x;}}const限定的數(shù)據(jù)成員初始化必須用?形式?還有什么數(shù)據(jù)成員必須用此種形式初始化??const限定的數(shù)據(jù)成員和引用數(shù)據(jù)成員初始化必須使用初始化列表形式.靜態(tài)成員不依賴于對象而存在.靜態(tài)數(shù)據(jù)成員:定義時加static靜態(tài)成員必須初始化使用語句:intA::b=0;靜態(tài)對象:static對象一旦定義存在于內(nèi)存中,直到程序結(jié)束才釋放內(nèi)存.靜態(tài)成員不依賴于對象而存在.靜態(tài)成員使用注意:非靜態(tài)對象靜態(tài)成員可否使用?靜態(tài)對象靜態(tài)成員可否使用?靜態(tài)對象非靜態(tài)成員可否使用?靜態(tài)成員函數(shù)非靜態(tài)成員可否使用?非靜態(tài)成員函數(shù)靜態(tài)成員可否使用?靜態(tài)成員不依賴于對象而存在.其他注意事項:
p1081-7靜態(tài)函數(shù)沒有this指針不能聲明為virtual函數(shù)友元普通函數(shù)作友元類的成員函數(shù)作友元類作友元類A的友元(函數(shù),成員函數(shù),類)可以訪問類A中的所有成員,但必須通過對象或引用來訪問.友元應在類A中利用friend聲明const對象const數(shù)據(jù)成員const成員函數(shù)const指針const變量const引用加const限定后不可改變,任何企圖改變都導致錯誤,并應注意他們的初始化!!使用規(guī)則:const對象不能調(diào)用任何非const成員函數(shù)const成員函數(shù)只能調(diào)用const成員函數(shù)非const對象可以調(diào)用const成員函數(shù)非const對象可以使用const數(shù)據(jù)成員const成員函數(shù)中不能使用任
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年及未來5年市場數(shù)據(jù)中國武漢市寫字樓行業(yè)市場競爭格局及發(fā)展趨勢預測報告
- 2025年高職(財務分析實務)案例解讀測試試題及答案
- 2025年大學大一(人力資源規(guī)劃)人力配置期中測試試題及答案
- 2025年高職經(jīng)濟林培育與利用(果樹栽培技術(shù))試題及答案
- 2025年高職(機電一體化技術(shù))機電設備綜合技能測試試題及答案
- 2025年大學土壤肥料(施用技術(shù))試題及答案
- 2025年高職軟件技術(shù)(軟件技術(shù))試題及答案
- 2025年高職藥物使用(急救護理)試題及答案
- 2025年高職礦山機電技術(shù)(礦山設備運維)試題及答案
- 2026年質(zhì)量管理教學(質(zhì)量管理方法)試題及答案
- 2026貴州省省、市兩級機關(guān)遴選公務員357人考試備考題庫及答案解析
- 兒童心律失常診療指南(2025年版)
- 北京通州產(chǎn)業(yè)服務有限公司招聘備考題庫必考題
- 2026南水北調(diào)東線山東干線有限責任公司人才招聘8人筆試模擬試題及答案解析
- 伊利實業(yè)集團招聘筆試題庫2026
- 2026年基金從業(yè)資格證考試題庫500道含答案(完整版)
- 動量守恒定律(教學設計)-2025-2026學年高二物理上冊人教版選擇性必修第一冊
- 網(wǎng)絡素養(yǎng)與自律主題班會
- 波形護欄工程施工組織設計方案
- 非靜脈曲張性上消化道出血管理指南解讀課件
- GB/T 10922-202555°非密封管螺紋量規(guī)
評論
0/150
提交評論