程序的類層次結(jié)構(gòu)課件_第1頁
程序的類層次結(jié)構(gòu)課件_第2頁
程序的類層次結(jié)構(gòu)課件_第3頁
程序的類層次結(jié)構(gòu)課件_第4頁
程序的類層次結(jié)構(gòu)課件_第5頁
已閱讀5頁,還剩69頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論