面向?qū)ο缶幊碳夹g(shù)第四章_第1頁
面向?qū)ο缶幊碳夹g(shù)第四章_第2頁
面向?qū)ο缶幊碳夹g(shù)第四章_第3頁
面向?qū)ο缶幊碳夹g(shù)第四章_第4頁
面向?qū)ο缶幊碳夹g(shù)第四章_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

面向?qū)ο缶幊碳夹g(shù)第四章第一頁,共六十五頁,2022年,8月28日一、類與對象類概述類是具有相同屬性和行為的一組對象的抽象集合,為該類的全部對象提供了統(tǒng)一的抽象描述,包括屬性和行為兩個主要部分。利用類可以實現(xiàn)數(shù)據(jù)的封裝、隱藏、繼承與派生。利用類易于編寫大型復(fù)雜程序,其模塊化程度比C中采用函數(shù)更高。慢慢體會…第二頁,共六十五頁,2022年,8月28日類是一種用戶自定義類型,聲明形式:class類名{

public:公有成員(外部接口)private:私有成員protected:保護(hù)型成員}2.類的定義:第三頁,共六十五頁,2022年,8月28日時鐘類的成員(數(shù)據(jù)成員與函數(shù)成員聲明)classClock{private:intHour,Minute,Second;public:

voidSetTime(intNewH,intNewM,

intNewS);

voidShowTime();

};成員函數(shù)數(shù)據(jù)成員第四頁,共六十五頁,2022年,8月28日voidClock::SetTime(intNewH,intNewM,intNewS){Hour=NewH;Minute=NewM;Second=NewS;}voidClock::ShowTime(){cout<<Hour<<":"<<Minute<<":"<<Second;}時鐘類的函數(shù)成員(定義部分)第五頁,共六十五頁,2022年,8月28日說明:關(guān)鍵字public后面聲明公有類型成員它們是類與外部的接口,任何外部函數(shù)都可以訪問公有類型數(shù)據(jù)和函數(shù)關(guān)鍵字private后面聲明私有類型成員允許本類中的函數(shù)訪問,類外部的任何函數(shù)都不能訪問。緊跟在類名稱的后面聲明私有成員,關(guān)鍵字private可省略(不提倡)第六頁,共六十五頁,2022年,8月28日說明:保護(hù)類型與private類似,其差別表現(xiàn)在繼承與派生時對派生類的影響不同,在第七章介紹。下頁例子第七頁,共六十五頁,2022年,8月28日classcircle{public:circle::circle(intr){radius=r;}intarea(){return(int)3.14*radius*radius;

}voidcircle_prt(){cout<<"theprivateradiusis:"<<radius<<endl;}private:intradius;

};voidmain(){circlecircle1(1),circle2(3);

cout<<"theprivateradiusis:"<<circle1.radius<<endl;circle1.circle_prt();Circle2.circle_prt();}ERROR!不允許訪問私有數(shù)據(jù)!如何解決?OK構(gòu)造函數(shù),后面介紹另一例子第八頁,共六十五頁,2022年,8月28日說明:數(shù)據(jù)成員:1.與一般的變量聲明相同,但需要將它放在類的聲明體中。2.不能在定義時初始化賦值定義成員時并不分配存儲空間,如inthour=0

函數(shù)成員:1.成員函數(shù)分類(1)構(gòu)造函數(shù)與析構(gòu)函數(shù)(2)其他成員函數(shù)2.在類中說明原形,在類外給出函數(shù)體實現(xiàn),并在函數(shù)名前使用類名加以限定。也可以直接在類中給出函數(shù)體允許聲明重載函數(shù)和帶缺省形參值的函數(shù)建議定義在類外第九頁,共六十五頁,2022年,8月28日3.對象的定義類的對象是該類的實例化,即類類型的變量。聲明形式:類名對象名;例:ClockmyClock;第十頁,共六十五頁,2022年,8月28日4.類、對象中成員的訪問方式類中成員互訪直接使用成員名類外訪問使用“對象名.成員名”方式訪問public屬性的成員使用“對象名指針->成員名”方式訪問public屬性的成員返回第十一頁,共六十五頁,2022年,8月28日二、構(gòu)造函數(shù)與析構(gòu)函數(shù)構(gòu)造函數(shù)名與類名相同構(gòu)造函數(shù)的作用是在對象被創(chuàng)建時使用特定的值構(gòu)造對象,或者說將對象初始化為一個特定的狀態(tài)。在對象創(chuàng)建時由系統(tǒng)自動調(diào)用。如果程序中未聲明,則系統(tǒng)自動產(chǎn)生出一個缺省形式的構(gòu)造函數(shù)1.構(gòu)造函數(shù)定義及使用第十二頁,共六十五頁,2022年,8月28日構(gòu)造函數(shù)舉例classcircle{public:

intradius;intarea();circle(intr);intarea(intr);};circle::circle(intr){radius=r;}intcircle::area(){return(int)3.14*radius*radius;}voidmain(){circlecircle1(5);cout<<"thecircle'sareais";cout<<circle1.area()<<endl;}定義部分第十三頁,共六十五頁,2022年,8月28日構(gòu)造函數(shù)與類同名不能指定返回值類型可以是重載函數(shù)可以是內(nèi)聯(lián)函數(shù)如無自定義構(gòu)造函數(shù),C++系統(tǒng)自動產(chǎn)生空的的構(gòu)造函數(shù)如構(gòu)造函數(shù)帶有參數(shù),則在定義對象時必須帶上相同類型的實參通過定義類的實例-對象,只分配數(shù)據(jù)成員空間,共享類的代碼空間注意:第十四頁,共六十五頁,2022年,8月28日析構(gòu)函數(shù)名:~類名完成對象被刪除前的一些清理工作。在對象的生存期結(jié)束的時刻系統(tǒng)自動調(diào)用它,然后再釋放此對象所屬的空間。如果程序中未聲明析構(gòu)函數(shù),編譯器將自動產(chǎn)生一個缺省的析構(gòu)函數(shù)。析構(gòu)函數(shù)不帶任何參數(shù)2.析構(gòu)函數(shù)定義及使用請關(guān)注后面的內(nèi)容!第十五頁,共六十五頁,2022年,8月28日析構(gòu)函數(shù)舉例classPoint{public:Point(intxx,intyy);

~Point();//...其它函數(shù)原形private:intX,intY;};包含:deleteAdeleteB…第十六頁,共六十五頁,2022年,8月28日注意命名方式一般類中設(shè)計有動態(tài)對象,則要設(shè)計析構(gòu)函數(shù)析構(gòu)函數(shù)不帶任何參數(shù)第十七頁,共六十五頁,2022年,8月28日課堂練習(xí)(5分鐘):1.定義一個表述圓的類(數(shù)據(jù)成員和函數(shù)成員),并提供相應(yīng)的方法2.定義一個表述人的類,(數(shù)據(jù)成員和函數(shù)成員),并提供相應(yīng)的方法體會面向?qū)ο蟮木幊痰奶攸c第十八頁,共六十五頁,2022年,8月28日3.內(nèi)聯(lián)成員函數(shù)為了提高運行時的效率,對于較簡單的函數(shù)可以聲明為內(nèi)聯(lián)形式。內(nèi)聯(lián)函數(shù)體中不要有復(fù)雜結(jié)構(gòu)(如循環(huán)語句和switch語句)。類中聲明內(nèi)聯(lián)成員函數(shù)的方式:將函數(shù)體放在類的聲明中。使用inline關(guān)鍵字。內(nèi)聯(lián)函數(shù)兩種聲明方式:顯示與隱式隱式:直接定義在類主體內(nèi)顯示:定義在類主體外,用inline說明請看下頁注意何時采用?第十九頁,共六十五頁,2022年,8月28日classPoint{public:

voidInit(intinitX,intinitY){X=initX;Y=initY;}intGetX(){returnX;}intGetY(){returnY;}private:intX,Y;};classPoint{public:voidInit(intinitX,intinitY);intGetX();intGetY();private:intX,Y;};inlinevoidPoint::Init(intinitX,intinitY){X=initX;Y=initY;}inlineintPoint::GetX(){returnX;}隱式: 顯式:第二十頁,共六十五頁,2022年,8月28日

當(dāng)構(gòu)造函數(shù)的參數(shù)為自身類對象的引用時,這個構(gòu)造函數(shù)稱為拷貝構(gòu)造函數(shù).

拷貝構(gòu)造函數(shù)的功能是用一個已有對象初始化一個正在建立的同類對象.4.拷貝構(gòu)造函數(shù)已存在對象新對象克隆第二十一頁,共六十五頁,2022年,8月28日拷貝構(gòu)造函數(shù)在以下三種情況下會被調(diào)用:⑴當(dāng)用類的一個對象去初始化該類的另一個對象時;⑵如果函數(shù)的形參是類對象,調(diào)用函數(shù)進(jìn)行形參和實參結(jié)合時;⑶如果函數(shù)的返回值是類對象,函數(shù)調(diào)用完成返回時。何時需要它?第二十二頁,共六十五頁,2022年,8月28日定義:class

類名{public:類名(形參);//構(gòu)造函數(shù)類名(類名&對象名);//拷貝構(gòu)造函數(shù)...};類名::類名(類名&對象名)//拷貝構(gòu)造函數(shù)的實現(xiàn){函數(shù)體}第二十三頁,共六十五頁,2022年,8月28日Pointa=a1;//拷貝構(gòu)造函數(shù)

等價于Pointa(a1);//可以改成這種形式

Point::Point(Point&p){X=p.X;Y=p.Y;cout<<"拷貝構(gòu)造函數(shù)被調(diào)用"<<endl;}classPoint{public:Point(intxx=0,intyy=0){X=xx;Y=yy;}

Point(Point&p);intGetX(){returnX;}intGetY(){returnY;}private:intX,Y;};請看下頁第二十四頁,共六十五頁,2022年,8月28日當(dāng)用類的一個對象去初始化該類的另一個對象時系統(tǒng)自動調(diào)用它實現(xiàn)拷貝賦值。voidmain(void){PointA(1,2);PointB(A);//拷貝構(gòu)造函數(shù)被調(diào)用cout<<B.GetX()<<endl;}情形之一第二十五頁,共六十五頁,2022年,8月28日若函數(shù)的形參為類對象,調(diào)用函數(shù)時,實參賦值給形參,系統(tǒng)自動調(diào)用拷貝構(gòu)造函數(shù)。例如:voidfun1(Pointp){cout<<p.GetX()<<endl;}voidmain(){PointA(1,2);fun1(A);//調(diào)用拷貝構(gòu)造函數(shù)}

情形之二第二十六頁,共六十五頁,2022年,8月28日當(dāng)函數(shù)的返回值是類對象時,系統(tǒng)自動調(diào)用拷貝構(gòu)造函數(shù)。例如:Pointfun2(){PointA(1,2);returnA;//調(diào)用拷貝構(gòu)造函數(shù)}voidmain(){PointB;B=fun2();}情形之三要看明白書上的例子返回第二十七頁,共六十五頁,2022年,8月28日三、面向?qū)ο蟮幕咎攸c抽象是對具體對象(問題)進(jìn)行概括,抽出這一類對象的公共性質(zhì)并加以描述的過程。數(shù)據(jù)抽象:描述某類對象的屬性或狀態(tài)(對象相互區(qū)別的物理量)。代碼抽象:描述某類對象的共有的行為特征或具有的功能。-之抽象?如何實現(xiàn)抽象通過類的定義。第二十八頁,共六十五頁,2022年,8月28日三、面向?qū)ο蟮脑O(shè)計思想層層分類,使概念逐漸細(xì)化,即具體化。例如,生物分為動物和植物,動物又分為脊椎動物和無脊椎動物,脊椎動物包括哺乳動物,哺乳動物又分為貓、狗……,等等-之分類回顧第二十九頁,共六十五頁,2022年,8月28日三、面向?qū)ο蟮脑O(shè)計思想將抽象出的數(shù)據(jù)成員、代碼成員相結(jié)合,將它們視為一個整體。增強(qiáng)安全性和簡化編程,不必了解具體的實現(xiàn)細(xì)節(jié),只需要通過外部接口,以特定的訪問權(quán)限,來使用類的成員。實現(xiàn)封裝:類定義中的{}-之封裝在設(shè)計者允許的權(quán)限下第三十頁,共六十五頁,2022年,8月28日三、面向?qū)ο蟮脑O(shè)計思想子類與父類子類繼承父類所有的屬性、方法,并可定義自己的特有屬性與方法提高軟件開發(fā)效率,為軟件復(fù)用提供強(qiáng)有力的支持多種繼承方式:公有、私有、保護(hù);單繼承、多繼承-之繼承第三十一頁,共六十五頁,2022年,8月28日三、面向?qū)ο蟮脑O(shè)計思想-之多態(tài)定義:指類具有相似功能的不同函數(shù)使用同一個名稱來實現(xiàn)如:1.運算符重載2.函數(shù)重載3.虛函數(shù)

…慢慢領(lǐng)會…第三十二頁,共六十五頁,2022年,8月28日插入語學(xué)習(xí)復(fù)雜、嚴(yán)密的C++語法體系C++既考慮設(shè)計理念的先進(jìn)性,又兼顧程序執(zhí)行的效率!理解、領(lǐng)會、運用其中的優(yōu)秀的面向?qū)ο蟪绦蛟O(shè)計、分析思想!返回是否感覺有點煩!第三十三頁,共六十五頁,2022年,8月28日四、類的組合類中的成員數(shù)據(jù)是另一個類的對象可以在已有的抽象的基礎(chǔ)上實現(xiàn)更復(fù)雜的抽象注意是對象第三十四頁,共六十五頁,2022年,8月28日例:classPoint{private:floatx,y;//點的坐標(biāo)

public:Point(floath,floatv);//構(gòu)造函數(shù)

floatGetX(void);//取X坐標(biāo)

floatGetY(void);//取Y坐標(biāo)

voidDraw(void);//在(x,y)處畫點};//...函數(shù)成員部分,略第三十五頁,共六十五頁,2022年,8月28日classLine{private:pointp1,p2;//線段的兩個端點public:Line(Pointa,Pointb);//構(gòu)造函數(shù)VoidDraw(void);//畫出線段};//...函數(shù)的實現(xiàn)略第三十六頁,共六十五頁,2022年,8月28日1.如何設(shè)計組合類的構(gòu)造函數(shù)?原則:不僅要負(fù)責(zé)對本類中的基本類型成員數(shù)據(jù)賦初值,也要對對象成員初始化。聲明形式:類名::類名(形參,本類成員形參):內(nèi)嵌對象1(參數(shù)),內(nèi)嵌對象2(參數(shù)),......{本類初始化}注意否則可能是一個不確定的值第三十七頁,共六十五頁,2022年,8月28日2.組合類的構(gòu)造函數(shù)調(diào)用構(gòu)造函數(shù)調(diào)用順序:若調(diào)用缺省構(gòu)造函數(shù)(即無形參的),則內(nèi)嵌對象的初始化也將調(diào)用相應(yīng)的缺省構(gòu)造函數(shù)。內(nèi)嵌對象的構(gòu)造函數(shù)內(nèi)嵌對象是客人;聲明順序調(diào)用本類的構(gòu)造函數(shù)調(diào)用本類的析構(gòu)函數(shù)內(nèi)嵌對象的析構(gòu)函數(shù)構(gòu)造:析構(gòu):穿衣服與脫衣服第三十八頁,共六十五頁,2022年,8月28日classPoint //Point類聲明{public: Point(intxx=0,intyy=0){X=xx;Y=yy;cout<<"point的構(gòu)造函數(shù)被調(diào)用"<<endl;} Point(Point&p); intGetX(){returnX;} intGetY(){returnY;}private: intX,Y;};Point::Point(Point&p) //拷貝構(gòu)造函數(shù)的實現(xiàn){ X=p.X; Y=p.Y; cout<<"Point拷貝構(gòu)造函數(shù)被調(diào)用"<<endl;}第三十九頁,共六十五頁,2022年,8月28日classLine //Line類的聲明{public: //外部接口 Line(Pointxp1,Pointxp2); Line(Line&); doubleGetLen(){returnlen;}private: //私有數(shù)據(jù)成員 Pointp1,p2; //Point類的對象p1,p2 doublelen; };//組合類的構(gòu)造函數(shù)Line::Line(Pointxp1,Pointxp2):p1(xp1),p2(xp2){ cout<<"Line構(gòu)造函數(shù)被調(diào)用"<<endl; doublex=double(p1.GetX()-p2.GetX()); doubley=double(p1.GetY()-p2.GetY()); len=sqrt(x*x+y*y);}第四十頁,共六十五頁,2022年,8月28日Line::Line(Line&Seg):p1(Seg.p1),p2(Seg.p2){ cout<<"Line拷貝構(gòu)造函數(shù)被調(diào)用"<<endl; len=Seg.len;}//主函數(shù)voidmain(){ Pointmyp1(1,1),myp2(4,5); //建立Point類的對象 Lineline(myp1,myp2); //建立Line類的對象 Lineline2(line); //利用拷貝構(gòu)造函數(shù)建立一個新對象 cout<<"Thelengthofthelineis:"; cout<<line.GetLen()<<endl; cout<<"Thelengthoftheline2is:"; cout<<line2.GetLen()<<endl;}第四十一頁,共六十五頁,2022年,8月28日第四十二頁,共六十五頁,2022年,8月28日例2:整體類部件子類1部件子類2部件子類n……代碼框架第四十三頁,共六十五頁,2022年,8月28日classWhole//整體類{public:Whole();Whole(inti,intj,intk);~Whole();voidPrint();private:Partone;Parttwo;intdate;};classPart//部件類{public:Part();Part(inti);~Part();voidPrint();private:intval;};下頁定義整體類的構(gòu)造函數(shù)第四十四頁,共六十五頁,2022年,8月28日Whole::Whole(){date=0;}Whole::Whole(inti,intj,intk):two(i),one(j),date(k){...}//...其它函數(shù)的實現(xiàn)略返回第四十五頁,共六十五頁,2022年,8月28日五、前向引用聲明類應(yīng)該先聲明,后使用如果需要在某個類的聲明之前,引用該類,則應(yīng)進(jìn)行前向引用聲明。前向引用聲明只為程序引入一個標(biāo)識符,沒有具體定義,不能使用該類的具體細(xì)節(jié)(如對象)。具體參考教材P112-113第四十六頁,共六十五頁,2022年,8月28日前向引用聲明舉例:classB;//前向引用聲明classA{public:voidf(Bb);};classB{public:voidg(Aa);};返回第四十七頁,共六十五頁,2022年,8月28日template<模板參數(shù)表>類聲明六、類模板使用類模板使用戶可以為類聲明一種模式,使得類中的某些數(shù)據(jù)成員、某些成員函數(shù)的參數(shù)、某些成員函數(shù)的返回值,能取任意類型(包括系統(tǒng)預(yù)定義的和用戶自定義的)目的:格式:template<typename標(biāo)示符>函數(shù)模板定義比較第四十八頁,共六十五頁,2022年,8月28日書上的例子:請先閱讀5minsstructstudent{ intid; floatgpa;};template<classT>classstore{private: Titem; inthavevalue; intflag;public: store(void); Tgetelem(void); voidputelem(Tx);};template<classT>store<T>::store():havevalue(1),flag(99){}template<classT>Tstore<T>::getelem(void){ if(havevalue==0) {cout<<"noitempresent!"<<endl; exit(0); } else {cout<<"thehavevalueis:"<<havevalue<<endl; cout<<"theflagis:"<<flag<<endl; returnitem; }}這兒構(gòu)造函數(shù)定義時,初始化其它數(shù)據(jù)成員可以改成class嗎?返回第四十九頁,共六十五頁,2022年,8月28日template<classT>voidstore<T>::putelem(Tx){havevalue++;item=x;}voidmain(){studentg={1000,23};store<int>s1,s2;s1.putelem(3);s2.putelem(7);cout<<s1.getelem()<<""<<s2.getelem()<<endl;返回第五十頁,共六十五頁,2022年,8月28日classcircle{public:inthavevalue;circle(intr);intarea(){return(int)3.14*radius*radius;}voidcircle_prt(){cout<<"theprivateradiusis:"<<radius<<endl;}private:intradius;};circle::circle(intr):havevalue(3){radius=r;}voidmain(){circlecircle1(1);circle*cp;cp=&circle1;cout<<"havevalue=:“;cout<<circle1.havevalue<<endl;circle1.circle_prt();cout<<"outbypointer:“;cout<<cp->havevalue<<endl;cout<<"outtheprivatedata”;cout<<circle1.radius<<cp->radius;//error}初始化禁止訪問私有數(shù)據(jù)返回返回返回第五十一頁,共六十五頁,2022年,8月28日七、面向?qū)ο髽?biāo)記兩種方法UML:統(tǒng)一建模語言

專業(yè)的面向?qū)ο蠼UZ言,功能強(qiáng)大較復(fù)雜

Coad/Yourdon類圖描述

簡單明晰難以描述成員的訪問控制第五十二頁,共六十五頁,2022年,8月28日UML對象名數(shù)據(jù)成員函數(shù)成員類名數(shù)據(jù)成員函數(shù)成員Coad/Yourdon消息繼承包含返回第五十三頁,共六十五頁,2022年,8月28日要點回顧1.類與對象的概念2.基本類的定義與使用1.類定義的格式:classname{…}2.訪問控制3.對象創(chuàng)建與撤銷1.類內(nèi)、類外的理解2.數(shù)據(jù)成員與函數(shù)成員的區(qū)別3.public與private:公共接口與隱藏1.構(gòu)造、析構(gòu)函數(shù):公有、無返回值2.拷貝構(gòu)造函數(shù)3.組合類1.定義:類中內(nèi)嵌對象

?問:內(nèi)嵌類的定義是組合類嗎2.組合類構(gòu)造與析構(gòu):調(diào)用順序4.類模板1.設(shè)計思想:數(shù)據(jù)處理的通用性,參數(shù)化程序設(shè)計2.適用范圍:普通數(shù)據(jù)類型、自定義數(shù)據(jù)類型、類3.注意事項:成員函數(shù)是模板函數(shù)、代碼要通用返回第五十四頁,共六十五頁,2022年,8月28日ClassA{public:inta,b,c;……private:intx,y,z;……}返回Aa1,a2,a3;第五十五頁,共六十五頁,2022年,8月28日ClassA{public:inta,b,c;……private:intx,y,z;……}公共接口內(nèi)部數(shù)據(jù),隱私返回第五十六頁,共六十五頁,2022年,8月28日1.構(gòu)造函數(shù)與析構(gòu)函數(shù)的功能?2.默認(rèn)構(gòu)造函數(shù):系統(tǒng)可以產(chǎn)生缺省的構(gòu)造函數(shù)與析構(gòu)函數(shù)3.構(gòu)造函數(shù)可以重載,析構(gòu)函數(shù)可以重載嗎?返回第五十七頁,共六十五頁,2022年,8月28日為什么需要拷貝構(gòu)造函數(shù)?格式:類名(類名&對象名){……}那些情形調(diào)用拷貝構(gòu)造函數(shù)?1.用同類對象初始化另一個對象2.用于對象參數(shù)傳遞3.函數(shù)的返回值是對象?如何理解返回第五十八頁,共六十五頁,2022年,8月28日classouter{public:inta;classinner{public: intb; inner(){cout<<"runtheinnerconstructor"<<endl; }voidshow(){cout<<"thedataofinneris:"<<b<<endl; } }inn;

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論