版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
程序的類層次結(jié)構(gòu)
程序的類層次結(jié)構(gòu)類的繼承與派生類層次中成員函數(shù)名的多態(tài)性派生面向?qū)ο蟮某绦蛟O(shè)計(jì)的一個(gè)重要特點(diǎn)是允許以既有類(也稱基類),以其為基礎(chǔ)導(dǎo)出(定義)新的類(也稱派生類)。這一過程稱為派生派生時(shí)不需要把既有類的相關(guān)代碼重新書寫一遍,只需要指明是以哪個(gè)類為基類,便可以將基類中的有關(guān)特征繼承過來,實(shí)現(xiàn)了部分代碼的可重用。類的繼承與派生派生方式派生類的構(gòu)造函數(shù)與釋放函數(shù)多基派生虛基類類層次中成員名的作用域類層次中的類轉(zhuǎn)換派生方式public派生與private派生Protected成員與protected派生public派生與private派生C++允許程序員用下邊的格式用一個(gè)類派生它的子類:
class派生類名
:派生方式
基類名
{
private:
新增私有成員聲明語句表列
public:
新增公開成員聲明語句表列
};兩種派生方式的特點(diǎn)1)無論哪種派生方式,基類中的private成員在派生類中都是不可見的。也就是說,基底類中的private成員不允許外部函數(shù)或派生類中的任何成員訪問。2)public派生時(shí),基類中的public成員相當(dāng)于派生類中的public成員。3)private派生時(shí),基類中的public成員相當(dāng)于派生類中的private成員派生后基類成員訪問性的變化基類成員的訪問性privatepublic派
生
方
式privatepublicprivatepublic派
生
類
成
員不可見可見可見外
部
函
數(shù)不可見可見定義Location—Point類層次結(jié)構(gòu)
classLocation{ //基類接口定義public:
int
mX_Pos,mY_Pos; //位置的坐標(biāo),以像素點(diǎn)計(jì)
Location(intx,inty); //構(gòu)造函數(shù),初始化位置坐標(biāo)
int
getX(); //返回當(dāng)前位置的x坐標(biāo)
int
getY(); //返回當(dāng)前位置的y坐標(biāo)
};
enumBOOLEAN{ FALSE,TRUE}; //定義一個(gè)布爾類型
classPoint:privateLocation{ //派生類接口定義
BOOLEANmVisible; //可見性變量
Public:
Point(intx,inty); //構(gòu)造函數(shù),初始化點(diǎn)的位置
BOOLEAN isVisible();//返回當(dāng)前點(diǎn)是否可見
Void show(); //顯示當(dāng)前點(diǎn)
Void hide(); //隱藏當(dāng)前點(diǎn)
Void moveTo(); //移動(dòng)當(dāng)前點(diǎn)
};Protected成員與protected派生protected成員是一種血緣關(guān)系內(nèi)外有別的成員。它只為它所在類中的方法和由它直接派生的類方法可見private、protected,、public作為類成員的可見性修飾符,將產(chǎn)生如下影響:
1)在一個(gè)類中定義的方法函數(shù),可以訪問本類中的任何成員,但只能訪問基類中的protected成員和public成員;
2)一個(gè)類對(duì)象,只能使用本類或其public派生基類中的public成員例5.1.2classb{protected:
intx1;public:
intx2; b(){x1=x2=5;}
};classd1:publicb{public:
intfd11(){ returnx1; //ok,可以訪問基類protected成員
returnx2; //ok,可以訪問基類public成員
}
intfd12(){ bbb; //returnbb.x1;類對(duì)象不可使用本類protected成員
returnbb.x2; //ok,類對(duì)象可以使用基類public成員
}};定義Location—Point—Circle類層次結(jié)構(gòu)
classLocation //位置類{ protected: //保護(hù)類成員
int
mX_Pos,mY_Pos; //在Location派生類中可訪問public:Location(intx,inty);
int
getX();
int
getY(); };
enumBOOLEAN{ FALSE,TRUE}; classPoint:publicLocation //點(diǎn)類{ protected: //保護(hù)類成員
BOOLEANmVisible; //在Point派生類中可訪問Public:
Point(intx,inty); BOOLEAN isVisible(); Void show(); Void hide(); Void moveTo(); };classCircle:publicPoint //圓類{protected: //保護(hù)類成員
int
mRadius; //圓半徑,在Circle派生類中可訪問Public:
Circle(intx,inty,intr); //初始化圓
void show(); //畫圓
void hide(); //隱藏圓
void moveTo(); //移動(dòng)圓
void expand(intdelta); //放大圓,半徑為(r+delta)
void contract(intdelta); //縮小圓,半徑為(r-delta)
};派生類中訪問屬性發(fā)生如下變化1)基類的private成員在派生類中是不可見的2)private派生使基類中的非private成員都成為派生類中的私有成員;protected派生使基類的非private成員在派生類中都變?yōu)閜rotected成員;public派生使基類的非private成員在派生類中訪問屬性保持不變3)不同的派生方式引起成員訪問屬性的改變,只能降低,不能提高(如將private成員提升為protected成員或public成員)。但是,C++允許在派生類中用訪問屬性修飾符,恢復(fù)一個(gè)成員原來的訪問屬性例5.1.4classb{protected:
intx1;
intx2;public:
intx3;
intx4;…
};classd:privateb //x1,x2,x3,x4將派生為private成員{ protected:b::x1; //將x1恢復(fù)為protected成員
public:b::x3; //將x3恢復(fù)為public成員
…};派生類的構(gòu)造函數(shù)與釋放函數(shù)類層次結(jié)構(gòu)中數(shù)據(jù)成員的存儲(chǔ)派生類中構(gòu)造函數(shù)/釋放函數(shù)的定義與調(diào)用派生類對(duì)象的創(chuàng)建類層次結(jié)構(gòu)中數(shù)據(jù)成員的存儲(chǔ)Location—Point—Circle類層次結(jié)構(gòu)中數(shù)據(jù)成員的存儲(chǔ)mX_PosmY_PosmX_PosmY_PosmVisiblemX_PosmY_PosmVisiblemRadius構(gòu)造函數(shù)/釋放函數(shù)的定義與調(diào)用首先通過派生類的構(gòu)造函數(shù)調(diào)用基類的構(gòu)造函數(shù),對(duì)基類成員進(jìn)行初始化然后再執(zhí)行對(duì)在派生類中新增的成員進(jìn)行初始化的操作因此可以說,派生類對(duì)象是由其所有先輩類共同創(chuàng)建的派生類的構(gòu)造函數(shù)原型格式
Y::Y(argX1,argX2,…,argY1,argY2,…):X(argX1,argX2,…)其中,X為Y的直接基類名,Y為派生類名。這一格式是遞歸的類層次結(jié)構(gòu)Location—Point—Circle中的構(gòu)造函數(shù)Location::Location(intx,inty){
mX_Pos=x;mY_Pos=y;}
Point::Point(intx,inty):Location(x,y)//先調(diào)用基類構(gòu)造函數(shù){ visible=FALSE; //缺省情況下是不可見的}Circle::Circle(intx,inty,intr):Point(x,y)//先調(diào)用基類構(gòu)造函數(shù){
mRadius=r;}說明1)創(chuàng)建一個(gè)Circle類對(duì)象時(shí),要自動(dòng)調(diào)用Point類的構(gòu)造函數(shù),再由Point類的構(gòu)造函數(shù)調(diào)用其父類Location構(gòu)造函數(shù)2)當(dāng)一個(gè)派生類對(duì)象撤銷時(shí),釋放函數(shù)調(diào)用的順序與構(gòu)造函數(shù)相反3)保護(hù)成員具有良好的繼承性,對(duì)保護(hù)成員的初始化最好在基類中進(jìn)行4)派生類的構(gòu)造函數(shù)的構(gòu)成形式,與包含對(duì)象成員的類的構(gòu)造函數(shù)相似但不相同派生類對(duì)象的創(chuàng)建派生類對(duì)象可以用兩種方式創(chuàng)建:
1)用常數(shù)參數(shù)表創(chuàng)建
2)由部分基類對(duì)象創(chuàng)建派生類對(duì)象多基派生派生類只有一個(gè)基類時(shí),稱為單基派生。一個(gè)派生類具有多個(gè)基類時(shí),稱為多基派生或多重繼承(multipleinheritance),這時(shí)將繼承每個(gè)基類的部分代碼。多基派生是單基派生的擴(kuò)展。與單基派生相比,既有同一性,又有特殊性。單基派生則可以看成多基派生的特例例由Hard(機(jī)器名)類與Soft(軟件,由os與Language組成)類派生出System類
#include<iostream.h>#include<string.h>classHard{protected:charbodyname[20];public:Hard(char*bdnm)//構(gòu)造函數(shù)
{cout<<"conH\n";
strcpy(bodyname,bdnm); }
Hard(Hard&abody)//復(fù)制構(gòu)造函數(shù)
{cout<<"copyH\n";
strcpy(bodyname,abody.bodyname); } voidprint(){cout<<"Body_name:"<<bodyname<<endl; }};
classSoft{protected:
charos[10];charlang[15];public:Soft(char*o,char*lg) //構(gòu)造函數(shù)
{cout<<"conF\n";strcpy(os,o);strcpy(lang,lg);}Soft(Soft&asoft) //復(fù)制構(gòu)造函數(shù)
{
cout<<"copyF\n";
strcpy(os,asoft.os);
strcpy(lang,asoft.lang);}voidprint(){cout<<"os:"<<os<<",language:"<<lang<<endl;}};classSystem:publicHard,publicSoft //派生類System{ charowner[10];public:System(char*ow,char*bn,char*o,char*lg):Hard(bn),Soft(o,lg) //調(diào)用基類構(gòu)造函數(shù)
{cout<<"conS\n";strcpy(owner,ow);}System(Hardabody,Softasoft,char*ow):Hard(abody),Soft(asoft) //調(diào)用基類復(fù)制構(gòu)造函數(shù)
{cout<<"copyS\n";strcpy(owner,ow);}voidprint(){cout<<"owner:"<<owner;
cout<<";\nhard:"<<bodyname;
cout<<";\nsoft:"<<os<<","<<lang<<endl;}};測(cè)試程序
voidmain(){Systembsystem("Wang",//用常參數(shù)表創(chuàng)建派生類對(duì)象
"IBMPC","PCDOS",
"TrueBASIC");
bsystem.print();
cout<<"Ok!\n";[y1]
Hardabody("AST386sx/16");Softasoft("PC
DOS","BorlandC++");Systemasystem("AST386sx/16",//基類對(duì)象創(chuàng)建派生類對(duì)象
asoft,"Zhang");
asystem.print();}虛基類在多基派生中,如果在多條繼承路徑上有一個(gè)公共的基類(如圖5.5(a)中的base0),則在這些路徑的匯合點(diǎn)(如圖5.5(a)中的derived類對(duì)象),便會(huì)產(chǎn)生來自不同路徑的公共基類的多個(gè)拷貝,如圖5.5(b)所示。如果只想保留公共基類的一個(gè)拷貝,就必須使用關(guān)鍵字virtual把這個(gè)公共基類定義為虛基類在多條繼承路徑上公共基類的情形base0base1base2derivedbase0{a}base0{a}base1base2derived在定義基類直接派生的類時(shí)說明格式class派生類名
:virtual派生方式
基類名
{
…
};例5.1.7classbase0{public:
inta;…};classbase1:virtualpublicbase0{…};classbase2:virtualpublicbase0{…};classderived:publicbase1,publicbase2{…};幾點(diǎn)說明1)virtual也是“派生方式”中的一個(gè)關(guān)鍵字,它與訪問控制關(guān)鍵字(public或private,protected)間的先后順序無關(guān)緊要2)為了保證虛基類在派生類中只繼承一次,就必須將其直接派生類定義時(shí)都說明為虛擬派生;否則除從用作虛基類的所有路徑中得到一個(gè)拷貝外,還從其它作為非虛基類的路徑中各得到一個(gè)拷貝3)虛基類對(duì)象的初始化圖5.6a所示的類層次結(jié)構(gòu),當(dāng)A與B都是C與D的虛基類時(shí),系統(tǒng)將要自左向右按深度優(yōu)先遍歷算法對(duì)公共派生類E進(jìn)行初始化虛基類對(duì)象的初始化CBADEABABCDE類層次中成員名的作用域private成員的作用域只在本類對(duì)象內(nèi)部public成員和protected成員,在類層次結(jié)構(gòu)中將形成成員名多重作用域:
·基類成員作用域和派生類新增成員作用域形成相包含的關(guān)系,派生類新增成員作用域?yàn)閮?nèi)層,基類成員作用域在外層
·內(nèi)層聲明的標(biāo)識(shí)符可以覆蓋外層聲明的同名標(biāo)識(shí)符,使其不可見;對(duì)于多基派生類,如果其多個(gè)基類中擁有同名成員,而在派生類中又新增了同名成員,則派生類的該同名成員將覆蓋所有基類的同名成員
·如果在幾個(gè)基類中具有同名成員,但在派生類中沒有與它們同名的新增成員名,則由于這些成員名具有相同的作用域,使系統(tǒng)無法判定到底是調(diào)用哪個(gè)基類成員有類層次結(jié)構(gòu):A←B←C#include<iostream.h>classA{public:
int
x,a;voidfun(inti){x=i;
cout<<"A::x="<<x<<endl;
cout<<endl;}};classB:publicA{public:
int
x,b;voidfun(inti){x=i*a; //引用非同名基類成員
cout<<"B::x="<<x<<endl; //引用本類成員
cout<<"A::x="<<A::x<<endl; //引用同名基成員
cout<<"a="<<a<<endl; //引用非同名基成員
cout<<endl;}};classC:publicB{public:
intx;voidfun(inti) { x=i*a*b; //引用非同名基類變量
cout<<“C::x=“<<x<<endl; //引用本類成員
cout<<“A::x=“<<A::x<<“,B::x=“<<B::x<<endl;//引用同名基類成員
cout<<“a=“<<a<<“,b=“<<b<<endl; //引用非同名基類成員
cout<<endl;}};
測(cè)試程序
voidmain(){
inti=2;Cobj;
obj.a=1; //引用非同名基成員
obj.A::fun(i); //引用同名基成員
obj.b=2; //引用非同名基成員
obj.B::fun(i); //引用同名基成員
obj.fun(i); //引用派生類成員
}例5.1.9classBase{public:staticvoidsb(); //靜態(tài)成員
voidfb();};classD:privateBase{}; //全私有派生classDD:publicD{voidfdd();};
voidDD::fdd(){Base::sb();//對(duì)
//fb();錯(cuò)
//sb();錯(cuò)
}類層次中的類轉(zhuǎn)換單基派生的情形多繼承的情形含有公共虛基類的類層次結(jié)構(gòu)單基派生的情形
#include<iostream.h>#include<string.h>classPerson{ char*mName; charmSex;
int
mAge;public: Person(char*n="",inta=50,chars='m') { mName=newchar[strlen(n)+1];
strcpy(mName,n);
mAge=a;
mSex=s; } ~Person() { delete[]mName; } void show() { cout<<“\nname:”<<mName;
cout<<“-age:”<<mAge;
cout<<“-sex:”<<mSex<<endl; } Person&operator=(Person&p) { delete[]mName;
mName=newchar[strlen(p.mName)+1];
strcpy(mName,p.mName);
mAge=p.mAge;
mSex=p.mSex; return*this; }};classEmployee:publicPerson{char*mDepartment;floatmSalary;public:Employee(char*,int,char,char*,float);voidshow();~Employee() {
delete[]mDepartment; }};Employee::Employee(char*nm="",int
ag=0,charsx='', char*dprt="",floatslr=0)
:Person(nm,ag,sx)
{
mDepartment=newchar[strlen(dprt)+1];
strcpy(mDepartment,dprt);
mSalary=sly;}
voidEmployee::show(){Person::print();
cout<<"-department:"<<department;
cout<<"-salary:"<<salary<<endl;}測(cè)試程序
voidmain(){Employeezh("Zhang",50,'m',"SHXIEMU",180);Personc,*pP;c=zh; //1用派生類對(duì)象給基類對(duì)象賦值
c.show();Person&y=zh; //2用派生類對(duì)象初始化基類的引用
y.show();
pP=&zh; //3把派生類對(duì)象地址賦值給基類指針
pP->show();((Employee*)pP)->show();//4基類指針向派生類指針強(qiáng)制轉(zhuǎn)換
}多繼承的情形classbase0{protected:
intb0;};classbase1:publicbase0{protected:
intb1;};classbase2:publicbase0{protected:
intb2;};classderived:publicbase1,publicbase2{floatd;public:derived();};各層次數(shù)據(jù)成員在內(nèi)存中的分布Pb1intb0intb1intb0intb2…base0base0base1base2derivedPb2base0base1base2derived克服對(duì)基類成員訪問的二義性對(duì)指針要顯式地指明全路徑將指針先強(qiáng)制轉(zhuǎn)換到不會(huì)產(chǎn)生二義性的基類顯式指明成員來自哪個(gè)類含有公共虛基類的類層次結(jié)構(gòu)使用虛基類,在它的幾條派生路經(jīng)的匯合處,只產(chǎn)生其一個(gè)拷貝引用的都是同一個(gè)虛基類中的數(shù)據(jù)成員具有相同的值??梢赃M(jìn)行如下的類變換
1)派生類對(duì)象的地址可以直接賦給間接公基類的指針,并且不需進(jìn)行強(qiáng)制類型轉(zhuǎn)換
2)一個(gè)虛基類的引用,可以引用一個(gè)派生類的對(duì)象類層次中成員函數(shù)名的多態(tài)性虛函數(shù)與動(dòng)態(tài)綁定虛函數(shù)的訪問純虛函數(shù)與抽象類虛釋放函數(shù)多基派生中虛函數(shù)的二義性虛函數(shù)與動(dòng)態(tài)綁定虛函數(shù)是用關(guān)鍵字virtual修飾的某基類中的protected或public成員函數(shù)。它可以在派生類中重定義,以形成不同的版本。只有在程序執(zhí)行過程中,依據(jù)指針具體指向哪個(gè)類對(duì)象,或依據(jù)引用哪個(gè)類對(duì)象,才能確定激活哪一個(gè)版本,實(shí)現(xiàn)動(dòng)態(tài)綁定。即這種綁定方式不是在編譯時(shí)靜態(tài)地進(jìn)行,而必須在程序運(yùn)行過程中進(jìn)行動(dòng)態(tài)綁定C++中靜態(tài)多態(tài)性與動(dòng)態(tài)多態(tài)性的主要特征形
式綁定方式各版本的函數(shù)原型綁定依據(jù)特點(diǎn)函數(shù)名重載靜態(tài)綁定不同參數(shù)數(shù)目及類型高效虛
函
數(shù)動(dòng)態(tài)綁定相同程序運(yùn)行時(shí)引用或指針指向高靈活性、抽象性和可擴(kuò)充性點(diǎn)─圓類層次結(jié)構(gòu)不使用虛函數(shù)
#include<iostream.h>classPoint //基類{
private:
floatmX,mY;
public:
Point(){}
Point(float
i,floatj)
{
mX=i;mY=j;
}
floatarea() //非虛函數(shù)
{
return0.0;
}
};constfloatPi=3.141593;classCircle:publicPoint //派生類{
private:
floatmRadius;
public:
Circle(floatr)
{
mRadius=r;
}
floatarea()
{
returnPi*mRadius*mRadius;
}
};點(diǎn)─圓類層次結(jié)構(gòu)使用虛函數(shù)#include<iostream.h>
classPoint{
private:
floatmX,mY;
public:
Point(){}
Point(floati,floatj)
{
mX=i;mY=j;
}
virtualfloatarea() //聲明為虛函數(shù)
{
return0.0;
}
};constfloatPi=3.141593;classCircle:publicPoint{
private:
floatmRadius;
public:
Circle(floatr)
{
mRadius=r;
}
floatarea() //虛函數(shù)的再定義
{returnPi*mRadius*mRadius;
}
};虛函數(shù)聲明與重定義的一般規(guī)則1)在基類中,用關(guān)鍵字virtual可以將其public或protected部分的成員函數(shù)聲明為虛函數(shù)2)一個(gè)虛函數(shù)是屬于它所在的類層次結(jié)構(gòu)的,而不是只屬于某一個(gè)類,只不過它在該類層次結(jié)構(gòu)中的不同類中具有不同的形態(tài)3)如果派生類中沒有對(duì)基類中說明的虛函數(shù)進(jìn)行重定義,則它繼承基類中的虛函數(shù)4)由于有些編譯器不能正確處理虛函數(shù),因此要避免把構(gòu)造函數(shù)聲明為虛函數(shù)5)虛函數(shù)只能是類的成員函數(shù),不能把虛函數(shù)聲明為靜態(tài)的或全局的;也不能把友元說明為虛函數(shù)。但是虛函數(shù)可以是另一個(gè)類的友元函數(shù)虛函數(shù)的訪問用基指針訪問與用對(duì)象名訪問訪問該類層次中的虛函數(shù)——要使用this指針用構(gòu)造函數(shù)/釋放函數(shù)訪問用基指針訪問與用對(duì)象名訪問把一個(gè)函數(shù)聲明為虛函數(shù),保證了這個(gè)函數(shù)被指向基類的指針(或引用)調(diào)用時(shí),C++系統(tǒng)對(duì)其進(jìn)行動(dòng)態(tài)綁定,向?qū)嶋H的對(duì)象傳遞消息但是,通過一個(gè)對(duì)象名訪問虛函數(shù)時(shí),C++系統(tǒng)將使用靜態(tài)綁定例5.2.2
intmain()
{
Circlec(6.4321);
Cout<<c.area()<<endl;
Cout<<c.Point::area()<<endl;
Cout<<c.Circle::area()<<endl;
}這時(shí),可以用作用域運(yùn)算符指定使用的是哪個(gè)類的虛函數(shù)。這與非虛函數(shù)沒有區(qū)別。這里所說的“指向基類”是指指向最先將一個(gè)成員函數(shù)聲明為虛函數(shù)的類。例5.2.3
#include<iostream.h>classbase0{public:voidv(){cout<<"base0\n";} //非虛函數(shù)
};classbase1:publicbase0{public:virtualvoid
v(){cout<<"base1\n";} //聲明虛函數(shù)};classA1:publicbase1{public:voidv(){cout<<"A1\n";}};classA2:publicA1{public:voidv(){cout<<"A2\n";}};classB1:privatebase1{public:voidv(){cout<<"B1\n";}};classB2:publicB1{public:voidv(){cout<<"B2\n";}};訪問該類層次中的虛函數(shù)#include<iostream.h>classA{public:virtualvoidv1(){cout<<"v1iscalledinA.\n";a1();}voida1(){cout<<"a1iscalledinA.\n";v2();}virtualvoidv2(){cout<<"v2iscalledinA.\n";}};classB:publicA{public:void
b1(){cout<<"b1iscalledinB.\n";v2();}virtualvoidv2(){cout<<"v2iscalledinB.\n";}};這里,this是一個(gè)指向基類A的指針。由于v2()是一個(gè)虛函數(shù),因此C++系統(tǒng)要通過動(dòng)態(tài)綁定實(shí)現(xiàn),具體取決于所引用的對(duì)象用構(gòu)造函數(shù)/釋放函數(shù)訪問#include<iostream.h>classbase{public:base(){};virtualvoid
溫馨提示
- 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年人工耳蝸行業(yè)政策分析:人工耳蝸行業(yè)標(biāo)準(zhǔn)推動(dòng)人工耳蝸技術(shù)普及
- 2025年個(gè)人三項(xiàng)機(jī)制學(xué)習(xí)心得體會(huì)模版(3篇)
- 課題申報(bào)參考:緊密型醫(yī)聯(lián)體視角下大灣區(qū)老年中醫(yī)藥服務(wù)評(píng)價(jià)體系構(gòu)建與實(shí)證研究
- 二零二五年度集團(tuán)高層管理人員任期制競(jìng)聘與續(xù)聘合同6篇
- 2025版小時(shí)工定期雇傭合同范本3篇
- 2025版土地征收及安置補(bǔ)償中介服務(wù)合同3篇
- 全新二零二五年度房地產(chǎn)銷售代理合同3篇
- 二零二五版企業(yè)內(nèi)部會(huì)計(jì)檔案安全保密服務(wù)協(xié)議3篇
- 2025年度文化創(chuàng)意產(chǎn)品開發(fā)與銷售合作協(xié)議范本4篇
- 二零二五年度廚具品牌設(shè)計(jì)創(chuàng)新合同4篇
- 圖像識(shí)別領(lǐng)域自適應(yīng)技術(shù)-洞察分析
- 個(gè)體戶店鋪?zhàn)赓U合同
- 禮盒業(yè)務(wù)銷售方案
- 二十屆三中全會(huì)精神學(xué)習(xí)試題及答案(100題)
- 小學(xué)五年級(jí)英語閱讀理解(帶答案)
- 仁愛版初中英語單詞(按字母順序排版)
- (正式版)YS∕T 5040-2024 有色金屬礦山工程項(xiàng)目可行性研究報(bào)告編制標(biāo)準(zhǔn)
- 【奧運(yùn)會(huì)獎(jiǎng)牌榜預(yù)測(cè)建模實(shí)證探析12000字(論文)】
- 危險(xiǎn)廢物貯存?zhèn)}庫建設(shè)標(biāo)準(zhǔn)
- 多層工業(yè)廠房主體結(jié)構(gòu)施工方案鋼筋混凝土結(jié)構(gòu)
- 救生艇筏、救助艇基本知識(shí)課件
評(píng)論
0/150
提交評(píng)論