版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第9章類的高級(jí)局部皮德常南京航空航天大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院1主要內(nèi)容9.1靜態(tài)成員9.2友元9.3對(duì)象賦值問題9.4拷貝構(gòu)造函數(shù)9.5運(yùn)算符重載9.6對(duì)象組合29.1靜態(tài)成員例:一個(gè)學(xué)生類,定義其對(duì)象張三、李四,他們分別維護(hù)著類成員的一份副本〔學(xué)號(hào)、姓名、籍貫等〕。如果要統(tǒng)計(jì)一個(gè)班學(xué)生總數(shù)?用類外的變量記錄,違背了數(shù)據(jù)封裝。用類的一個(gè)數(shù)據(jù)成員記錄,導(dǎo)致多個(gè)副本,不僅冗余,而且勢必造成數(shù)據(jù)不一致。39.1.1靜態(tài)數(shù)據(jù)成員1.用關(guān)鍵字static聲明;2.同一個(gè)類中的所有對(duì)象都共享該變量;3.必須在類外定義和初始化,用(::)來指明所屬的類。4.靜態(tài)變量不依賴于對(duì)象而存在,無論是否認(rèn)義該類的對(duì)象,這種類型的變量都存在。靜態(tài)數(shù)據(jù)成員實(shí)際上是在類外定義的一個(gè)變量,它的生存期和整個(gè)程序的生存期一樣,在定義對(duì)象之前,靜態(tài)數(shù)據(jù)成員就已經(jīng)存在。4classStaticDemo{staticintx;
inty;public:voidputx(inta){x=a; }voidputy(intb){y=b; }intgetx(){returnx; }intgety(){returny; }};intStaticDemo::x; //靜態(tài)變量x將被StaticDemo類的所有對(duì)象共享,例如:StaticDemoobj1,obj2;obj1.putx(5);obj1.puty(l0);obj2.puty(20);cout<<"x:"<<obj1.getx()<<""<<obj2.getx()<<endl;cout<<"y:"<<obj1.gety()<<""<<obj2.gety()<<endl;理解它!59.1.2靜態(tài)函數(shù)成員靜態(tài)函數(shù)成員是類中的一個(gè)函數(shù),有static修飾。靜態(tài)函數(shù)成員和靜態(tài)數(shù)據(jù)成員類似,在對(duì)象生成之前也已經(jīng)存在。這就是說在對(duì)象產(chǎn)生之前,靜態(tài)的函數(shù)成員就能訪問其它靜態(tài)成員。類外代碼可以使用類名和作用域操作符來調(diào)用靜態(tài)成員函數(shù)。靜態(tài)成員函數(shù)只能引用屬于該類的靜態(tài)數(shù)據(jù)成員或靜態(tài)成員函數(shù)。見例【例9-2】。6//budget2.h文件的內(nèi)容。classBudget{ staticfloatcorpBudget; floatdivBudget;public: Budget(){divBudget=0;} voidaddBudget(floatb) { divBudget+=b; corpBudget+=divBudget; }
staticvoidmainOffice(float); floatgetDivBudget(){returndivBudget;} floatgetCorpBudget(){returncorpBudget;}};7//Contentsofbudget2.cpp#include"budget2.h"floatBudget::corpBudget=0; //Definitionofstaticmemberfunction.
voidBudget::mainOffice(floatmoffice){ corpBudget+=moffice;}8//主程序pr9-2.cpp的內(nèi)容#include"budget2.h“voidmain(){ floatamount; inti; floatbud; cout<<"Entermainoffice'sbudgetrequest:"; cin>>amount;
Budget::mainOffice(amount); Budgetdivisions[4];9for(i=0;i<4;i++){ cout<<"EnterthebudgetforDivision"; cout<<(i+1)<<""; cin>>bud; divisions[i].addBudget(bud);}cout<<"\nHerearethedivisionbudget:\n";for(i=0;i<4;i++){ cout<<"\tDivision"<<(i+1)<<"\t$"; cout<<divisions[i].getDivBudget()<<endl;}10 cout<<"\tTotalRequests:"; cout<<divisions[0].getCorpBudget()<<endl;}1.對(duì)于靜態(tài)的函數(shù)成員,是通過類名和作用域分辨符調(diào)用的。2.也可以采用對(duì)象點(diǎn)的方式調(diào)用budget2.h
budget2.cpp9-2.cpp119.2友元函數(shù)引入友元的原因?1.友元函數(shù)不是類中的函數(shù)成員,但它和類的函數(shù)成員一樣,可以訪問類中定義的私有成員。2.友元函數(shù)可以是一個(gè)外部函數(shù),也可以是另外一個(gè)類的函數(shù)成員。3.將某個(gè)函數(shù)聲明為一個(gè)類的友元方式,前面加friend。12【例9-3】求兩個(gè)點(diǎn)之間的距離。classPoint{ intxPos,yPos;public: Point(intxx=0,intyy=0) {xPos=xx;yPos=yy;} intGetXPos(){returnxPos;} intGetYPos(){returnyPos;}
frienddoubleDistance(Point&a,Point&b);};9.2.1外部函數(shù)作為類的友元13doubleDistance(Point&a,Point&b){
doubledx=a.xPos-b.xPos; doubledy=a.yPos-b.yPos; returnsqrt(dx*dx+dy*dy);}voidmain(){Pointp1(3,5),p2(4,6);cout<<Distance(p1,p2)<<endl;}9-3.cpp不采用友元如何解決?14其他類的成員函數(shù)聲明為一個(gè)類的友元函數(shù),這個(gè)成員函數(shù)也稱為友元成員。友元成員不僅可以訪問自己所在類對(duì)象中的私有成員和公有成員,還可以訪問friend聲明語句所在類對(duì)象中的私有成員和公有成員,這樣能使兩個(gè)類相互合作完成某一任務(wù)。例:將Aux類的函數(shù)addBudget聲明為Budget類的友元函數(shù)。9.2.2類的成員函數(shù)作為另外一個(gè)類的友元15classBudget;//對(duì)Budget類超前使用說明classAux //Aux類的定義{private:floatauxBudget;public:Aux(){auxBudget=0;}voidaddBudget(float,Budget&);floatgetDivBudget(){returnauxBudget;}};16classBudget//Budgetclassdeclaration{staticfloatcorpBudget;floatdivBudget;public:Budget(){divBudget=0;}voidaddBudget(floatB)
{divBudget+=B;corpBudget+=divBudget;}floatgetDivBudget(){returndivBudget;}floatgetCorpBudget(){returncorpBudget;}
staticvoidmainOffice(float);
friendvoidAux::addBudget(float,Budget&);};17//Contentsofbudget3.cpp#include"budget3.h" //DefinitionofstaticmemberofBudgetclassfloatBudget::corpBudget=0;//DefinitionofstaticmemberfunctionmainOffice.
voidBudget::mainOffice(floatmoffice){ corpBudget+=moffice;}18//Contentsofauxi1.cpp#include"auxi1.h"#include"budget3.h"http://DefinitionofmemberfunctionmainOffice.voidAux::addBudget(floatb,Budget&div){ auxBudget+=b;
div.corpBudget+=auxBudget;}AttentionPlz19//Contentsofmainprogram#include"budget3.h“voidmain(){ floatamount; inti; floatbud; cout<<"Enterthemainoffice'sbudget:"; cin>>amount;
Budget::mainOffice(amount); Budgetdivisions[4];AuxauxOffices[4];20for(i=0;i<4;i++){cout<<"Enterthebudgetrequestfordivision"; cout<<(i+1)<<":"; cin>>bud; divisions[i].addBudget(bud); cout<<"Enterthebudgetrequestfordivision"; cout<<(i+1)<<"'sauxiliaryoffice:"; cin>>bud; auxOffices[i].addBudget(bud,divisions[i]);}21cout<<"Herearethedivisionbudgetrequests:\n";for(i=0;i<4;i++) {cout<<"\tDivision"<<(i+1)<<"\t\t\t"; cout<<setw(7); cout<<divisions[i].getDivBudget()<<endl; cout<<"\tAuxilaryOfficeofDivision"<<(i+1); cout<<"\t"; cout<<auxOffices[i].getDivBudget()<<endl;}cout<<"\tTotalRequests(includingmainoffice):";cout<<divisions[0].getCorpBudget()<<endl;}auxi1.hbudget3.hauxi1.cppbudget3.cpp9-3.cpp229.2.3一個(gè)類作為另外一個(gè)類的友元假設(shè)一個(gè)類為另一個(gè)類的友元,那么此類的所有成員都能訪問對(duì)方類的私有成員。classA{intx;
friendclassB;public:voidDisplay(){cout<<x<<endl;}};classB{
Aa;public:voidSet(inti){a.x
=i;}voidDisplay(){a.Display();}};不好的方法,勿模仿239.3對(duì)象賦值問題采用賦值運(yùn)算符“=”可以將一個(gè)對(duì)象賦值給另外一個(gè)對(duì)象,或者采用一個(gè)對(duì)象初始化另外一個(gè)對(duì)象。在缺省情況下,這兩個(gè)操作執(zhí)行的是對(duì)象成員之間的拷貝,也稱為按位拷貝或淺拷貝。
【例9-5】淺拷貝應(yīng)用舉例。.24classRectangle{floatwidth,length,area;voidcalcArea(){area=width*length;}public:voidsetData(floatw,floatl){ width=w;length=l;calcArea();}floatgetWidth(){returnwidth;}floatgetLength(){returnlength;}floatgetArea(){returnarea;}};25voidmain(){ Rectanglebox1,box2; box1.setData(10,20); box2.setData(5,10); cout<<"\nBoxl'sArea:"<<box1.getArea(); cout<<"\nBox2'sArea:"<<box2.getArea(); box2=box1; //對(duì)象賦值 cout<<"\nBoxl'sArea:"<<box1.getArea(); cout<<"\nBox2'sArea:"<<box2.getArea();}9-5.cpp269.3對(duì)象賦值問題(continued)當(dāng)采用一個(gè)對(duì)象初始化另一個(gè)對(duì)象時(shí),對(duì)象成員之間的賦值也是按位拷貝。賦值和初始化的區(qū)別:賦值出現(xiàn)在兩個(gè)對(duì)象都已經(jīng)存在的情況下,而初始化出現(xiàn)在創(chuàng)立對(duì)象時(shí),例如: Rectanglebox1; box1.setData(100,50); Rectanglebox2=box1;//initialization279.4拷貝構(gòu)造函數(shù)拷貝構(gòu)造函數(shù)是一個(gè)特殊的構(gòu)造函數(shù),當(dāng)定義一個(gè)對(duì)象并采用同類型的另外一個(gè)對(duì)象初始化時(shí),將自動(dòng)調(diào)用拷貝構(gòu)造函數(shù)。通常,采用缺省的按位拷貝操作也能正確地實(shí)現(xiàn)賦值,但在某些情況下不能正確執(zhí)行。Example:
28classPersonInfo{ char*name; intage;public: PersonInfo(char*n,inta) { name=newchar[strlen(n)+1]; strcpy(name,n); age=a; }
~PersonInfo(){delete[]name;} char*getName(){returnname;} intgetAge(){returnage;}};PersonInfoperson1("Jones",20);PersonInfoperson2=person1;//將產(chǎn)生???291.解決的方法:定義拷貝構(gòu)造函數(shù)。2.拷貝構(gòu)造函數(shù)是一個(gè)特殊的構(gòu)造函數(shù),當(dāng)采用一個(gè)對(duì)象初始化另一個(gè)對(duì)象時(shí),將自動(dòng)調(diào)用該函數(shù)。PersonInfo(PersonInfo&obj){ name=newchar[strlen(obj.name)+1]; strcpy(name,); age=obj.age;}拷貝構(gòu)造函數(shù)的參數(shù)代表“=”運(yùn)算符右邊的對(duì)象:
PersonInfoperson2=person1;30進(jìn)一步演化:UsingconstParametersPersonInfo(constPersonInfo&obj){ name=newchar[strlen(obj.name)+1]; strcpy(name,); age=obj.age;}319.4.1缺省的拷貝構(gòu)造函數(shù)如果一個(gè)類沒有定義拷貝構(gòu)造函數(shù),C++將為其創(chuàng)立一個(gè)缺省的拷貝構(gòu)造函數(shù)。缺省的拷貝構(gòu)造函數(shù)的功能就是按位賦值。321.用對(duì)象初始化同類的另一個(gè)對(duì)象。例如:
PersonInfost1("ZhangSan",20);
PersonInfost2(st1),st3=st1;9.4.2調(diào)用拷貝構(gòu)造函數(shù)的情況Ex9-a.cpp332.如果函數(shù)的形參是對(duì)象,當(dāng)進(jìn)行參數(shù)傳遞時(shí)將調(diào)用拷貝構(gòu)造函數(shù)。
voidchangePerson(PersonInfop){//…}
voidmain(){PersonInfost1("Susan",20);changePerson(st1); }思考:為什么拷貝構(gòu)造函數(shù)的參數(shù)一定是個(gè)引用,而不是對(duì)象?Ex9-b.cpp343.如果函數(shù)的返回值是對(duì)象,函數(shù)執(zhí)行結(jié)束時(shí),將調(diào)用拷貝構(gòu)造函數(shù)對(duì)無名臨時(shí)對(duì)象初始化。
classPersonInfo{public:PersonInfo(){cout<<"調(diào)用構(gòu)造函數(shù)\n";}PersonInfo(PersonInfo&obj){cout<<"調(diào)用拷貝\n";}~PersonInfo(){cout<<"調(diào)用析構(gòu)函數(shù)\n";}};
PersonInfogetPerson(){PersonInfoperson;returnperson;//函數(shù)的返回值是對(duì)象}
voidmain(){PersonInfostudent;student=getPerson();}35注意:VC2005版本有問題,VC6正確。Ex9-c.cpp36如果函數(shù)返回值是對(duì)象,要考慮return語句的效率。例如: returnstring(s1+s2);表示“創(chuàng)立一個(gè)無名的臨時(shí)對(duì)象并且將它返回”與“先創(chuàng)立一個(gè)局部對(duì)象temp并返回”不等價(jià): stringtemp(s1+s2); returntemp;379.4.4編譯器的一個(gè)紕漏classInvoiceItem{public: InvoiceItem(intsize=51)
{ cout<<"調(diào)用缺省構(gòu)造函數(shù)!\n"; } InvoiceItem(char*d)
{ cout<<"調(diào)用一個(gè)參數(shù)的構(gòu)造函數(shù)!\n";} InvoiceItem(char*d,intu)
{ cout<<"調(diào)用兩個(gè)參數(shù)的構(gòu)造函數(shù)!\n"; } InvoiceItem(InvoiceItem&obj)
{ cout<<"調(diào)用拷貝構(gòu)造函數(shù)!\n"; } ~InvoiceItem()
{ cout<<"調(diào)用析構(gòu)函數(shù)!\n"; }};389.4.4編譯器的一個(gè)紕漏intmain(){ InvoiceItemInventory[5]={//對(duì)象數(shù)組
InvoiceItem("鼠標(biāo)",100), //A行
InvoiceItem("硬盤"), //B行
"主板", //C行
99 //D行
}; return0;}注意:VC2005和VC6都不正確。9-ERROR.cpp399.5運(yùn)算符重載Example1:The/operatorcanperformtwotypesofdivision:floatingpointandinteger.
Example2: Datetoday(2011,4,28); today.add(5); today+=5;//???409.5.1重載賦值運(yùn)算符如果對(duì)象中有指針成員,采用拷貝構(gòu)造函數(shù)能解決對(duì)象初始化問題,但并不能處理對(duì)象賦值。Example:假設(shè)PersonInfo具有拷貝構(gòu)造函數(shù):PersonInfoperson1("ZhangSan”,20),person2("John",24);person2=person1;//memberwiseassignment
41Overloadthe=operator:classPersonInfo{char*name;
intage;public: ……
voidoperator=(constPersonInfo&right){ delete[]name; name=newchar[strlen()+1]; strcpy(name,); age=right.age;}};
42operator=函數(shù)的參數(shù)不一定是常引用,上述聲明優(yōu)點(diǎn):(1)效率高。采用引用可以防止參數(shù)傳遞時(shí)生成對(duì)象拷貝,節(jié)省了對(duì)象初始化和析構(gòu)的過程。(2)將參數(shù)聲明為常引用,可以防止函數(shù)無意間修改對(duì)象right的內(nèi)容。(3)符合賦值運(yùn)算的常識(shí)。函數(shù)調(diào)用:p2.operator=(p1);
p2=p1;p3=p2=p1;//???439.5.2this指針this是一個(gè)隱含的內(nèi)嵌指針,它指向調(diào)用成員函數(shù)的當(dāng)前對(duì)象。Example:
cout<<person1.getName()<<endl; cout<<person2.getName()<<endl;44//【例9-8】
classPersonInfo{ char*name; intage;public:PersonInfooperator=(constPersonInfo&right){ delete[]name; name=newchar[strlen()+1];strcpy(name,); age=right.age;return*this;}//其他函數(shù)略};45voidmain(){PersonInfojim("Jim",20),bob("Bob",21), clone=jim;clone=bob=jim;
//Calloverloaded=operatorcout<<clone.getName()<<"," <<clone.getAge()<<endl;}operator=還有問題嗎?46PersonInfo&operator=(constPersonInfo&right){ //重載運(yùn)算符“=”的秘笈:
//一、檢查自賦值
if(this==&right)return*this;
//二、釋放原有的內(nèi)存空間
delete[]name;
//三、分配新的內(nèi)存空間,并復(fù)制內(nèi)容
name=newchar[strlen()+1];strcpy(name,);age=right.age;
//四、返回本對(duì)象的引用
return*this;}9-8.cpp47this指針是以隱含參數(shù)的形式傳遞給非靜態(tài)的函數(shù)成員:
PersonInfo(char*name,intage)
{
this->name=newchar[strlen(name)+1];strcpy(this->name,name);
this->age=age;}489.5.3重載雙目算術(shù)運(yùn)算符引入原因:
Feetincheslength1(3,5),length2(6,3),length3; length3=length1+length2;//等價(jià)于
length3=length1.operator+(length2);僅講述如何重載雙目運(yùn)算符+和-,其它類似。49classFeetInches{ intfeet,inches;voidsimplify();public://其他函數(shù)代碼見節(jié) ……FeetInchesoperator+(constFeetInches&);FeetInchesoperator-(constFeetInches&);};50//Overloadedbinary+operator.FeetInchesFeetInches::operator+( constFeetInches&right){ FeetInchestemp; temp.inches=inches+right.inches; temp.feet=feet+right.feet; temp.simplify(); returntemp;}51//Overloadedbinary-operator.FeetInchesFeetInches::operator-( constFeetInches&right){ FeetInchestemp; temp.inches=inches-right.inches; temp.feet=feet-right.feet; temp.simplify(); returntemp;}529.5.3重載雙目算術(shù)運(yùn)算符任何一個(gè)雙目算術(shù)運(yùn)算符B被重載以后,當(dāng)執(zhí)行二元運(yùn)算時(shí):Obj1BObj2完全等價(jià)于:Obj1.operatorB(Obj2)Ex9-d.cpp539.5.4重載單目算術(shù)運(yùn)算符Example1:
distance2=++distancel;//前置++等價(jià)于: distance2=distancel.operator++();Example2:
distance2=distancel++;//后置++等價(jià)于: distance2=distancel.operator++(0);54classFeetInches//【例9-9】{ intfeet,inches;voidsimplify();public: ……FeetInchesoperator+(constFeetInches&);FeetInchesoperator-(constFeetInches&);
FeetInches
operator++();FeetInchesoperator++(int);};Dummyparameter55//Overloadedprefix++operator.FeetInchesFeetInches::operator++(){ ++inches; simplify(); return*this;}56 //Overloadedpostfix++operator.FeetInchesFeetInches::operator++(int){ FeetInchestemp(feet,inches); inches++; simplify(); return temp;}Ex9-e.cpp579.5.5重載關(guān)系運(yùn)算符重載關(guān)系運(yùn)算符,實(shí)現(xiàn)兩個(gè)對(duì)象的比較,其中關(guān)系運(yùn)算符函數(shù)要返回一個(gè)布爾值〔true或false〕:Example:if(distancel<distance2){ ...code...}58classFeetInches{intfeet,inches;voidsimplify();public: ……booloperator>(constFeetInches&);
booloperator<(constFeetInches&);
booloperator==(constFeetInches&);};59//Overloaded>operator.
bool FeetInches::operator>( constFeetInches&right){if(feet>right.feet) returntrue;elseif(feet==right.feet&&inches>right.inches) returntrue;elsereturnfalse;}60//Overloaded<operator.boolFeetInches::operator<( constFeetInches&right){if(feet<right.feet) returntrue;elseif(feet==right.feet&&inches<right.inches) returntrue;else returnfalse;}61//Overloaded==operator.boolFeetInches::operator==( constFeetInches&right){if(feet==right.feet&&inches==right.inches) returntrue;else returnfalse;}Ex9-f.cpp629.5.6重載流操作符<<和>>Example: intvalue; cout<<value; FeetInchesdistance;
cin>>distance;
注意:如果要為FeetInches類重載流插入符<<,那么必須通過友元函數(shù)的形式實(shí)現(xiàn)函數(shù)重載。能否實(shí)現(xiàn)?63classFeetInches{intfeet,inches;public: ……friend
ostream&operator<<(ostream&, FeetInches&);friendistream&operator>>(istream&, FeetInches&);};64//Overloaded<<operator.ostream
&operator<<( ostream&strm, FeetInches&obj){ strm<<obj.feet<<"feet," <<obj.inches<<"inches"; return strm;}65//Overloaded>>operator.istream &operator>>( istream&strm, FeetInches&obj){ cout<<"Feet:";strm>>obj.feet; cout<<"Inches:";strm>>obj.inches; return strm;}66
cout<<distancel<<""<<distance2<<endl;等價(jià)于如下過程:1.首先調(diào)用重載函數(shù)<<,執(zhí)行cout<<distancel,返回cout對(duì)象;2.執(zhí)行cout<<“”,返回值是cout對(duì)象;3.以(1)的方式,執(zhí)行cout<<distance2;4.以(2)的方式,執(zhí)行表達(dá)式中的cout<<endl;Ex9-g.cpp679.5.7重載類型轉(zhuǎn)換運(yùn)算符Example: inti=100; floatf=3.14f; i=f; f=i;對(duì)于一個(gè)對(duì)象,通過重載類型轉(zhuǎn)換函數(shù),可實(shí)現(xiàn)類型轉(zhuǎn)換功能。
68classFeetInches{intfeet,inches;public: …… operatorfloat();
//Truncatestheinchesvalue operatorint(){ returnfeet; }};Noreturntypeisspecifiedinthefunctionheader.SincethefunctionisaFeetInches-to-floatconversionfunction,itwillalwaysreturnafloat.69
//ConvertaFeetInchesobjecttoafloat.
FeetInches::operatorfloat(){ floattemp=feet; temp+=(inches/12.0f); returntemp;}70voidmain(){ FeetInchesdistance; float f; int i; cin>>distance; f=distance; i=distance;}Ex9-h.cpp719.5.8重載[]操作符Example1: stringname="John"; cout<<name[0]; name[0]='a';C++除了支持重載傳統(tǒng)的運(yùn)算符,還支持重載[]符。這樣就能象操作普通數(shù)組一樣操作對(duì)象數(shù)組。72classIntArray{ int*aptr; intarraySize; voidmemError(); voidsubError();public: IntArray(int); IntArray(constIntArray&); ~IntArray(); intsize(){returnarraySize;} int&operator[](constint&);};why?73//ConstructorforIntArrayclassIntArray::IntArray(ints){ arraySize=s; aptr=newint[s]; if(aptr==0) memError(); for(inti=0;i<arraySize;i++) *(aptr+i)=0;}74//CopyConstructorforIntArrayclass.IntArray::IntArray(constIntArray&obj){ arraySize=obj.arraySize; aptr=newint[arraySize]; if(aptr==0) memError(); for(inti=0;i<arraySize;i++) *(aptr+i)=*(obj.aptr+i);}75//DestructorforIntArrayclass.IntArray::~IntArray(){ if(arraySize>0) delete[]aptr; arraySize=0;}76 //memErrorfunction.voidIntArray::memError(){ cout<<"Cannotallocatememory.\n"; exit(0);} //subErrorfunction.voidIntArray::subError(){ cout
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年蘇教新版選修3地理上冊(cè)階段測試試卷含答案
- 2025年粵人版九年級(jí)生物上冊(cè)月考試卷含答案
- 二零二五年度衛(wèi)生間清潔劑研發(fā)與供應(yīng)合同3篇
- 二零二五年度2025版文化創(chuàng)意產(chǎn)業(yè)融資合同范本4篇
- 2025年度環(huán)保工程派遣人員勞務(wù)合同范本4篇
- 擔(dān)保合同約定條款協(xié)議書(2篇)
- 2025年度摩托車租賃平臺(tái)合作合同范本3篇
- 2025年度牧草種植基地環(huán)境保護(hù)合同范本3篇
- 二零二五版苗木種植基地林業(yè)病蟲害防治合同2篇
- 二零二五年度物流供應(yīng)鏈融資借款合同大全4篇
- GB/T 16895.3-2024低壓電氣裝置第5-54部分:電氣設(shè)備的選擇和安裝接地配置和保護(hù)導(dǎo)體
- 計(jì)劃合同部部長述職報(bào)告范文
- 人教版高一地理必修一期末試卷
- GJB9001C質(zhì)量管理體系要求-培訓(xùn)專題培訓(xùn)課件
- 二手車車主寄售協(xié)議書范文范本
- 窗簾采購?fù)稑?biāo)方案(技術(shù)方案)
- 五年級(jí)上冊(cè)小數(shù)除法豎式計(jì)算練習(xí)300題及答案
- 語言規(guī)劃講義
- 生活用房設(shè)施施工方案模板
- 上海市楊浦區(qū)2022屆初三中考二模英語試卷+答案
- GB/T 9755-2001合成樹脂乳液外墻涂料
評(píng)論
0/150
提交評(píng)論