




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第5章 派生類5.1 派生類的概念5.2 多承繼 5.1.1 為什么要運用承繼5.1.2 維護段5.1.3 基類的訪問描畫符5.1.4 基類對象的初始化5.1.5 Point類承繼的一個例子5.2.1 多承繼的概念5.2.2 虛基類5.3 虛函數(shù)與多態(tài)性5.3.1 基類對象的指針指向派生類對象5.3.2 虛函數(shù)5.3.3 純虛函數(shù)及籠統(tǒng)類 5.1.1 為什么要運用承繼 在最簡單的情況下,一個類B承繼類A或者從類A派生類B,通常將類A稱為基類,類B稱為派生類。 這時,類B的對象具有類A對象的一切特性,甚至還會更多一些。 也可以這樣說,類B從類A派生出來。這意味著類B至少描畫了與類A同樣的接口,至
2、少包含了同類A一樣的數(shù)據(jù),可以共享類A的成員函數(shù)。5.1 派生類的概念BA 類B承繼了類A,那么類A的公有段成員可以傳送給派生類B,當作類B本人的成員。 在創(chuàng)建派生類對象時,先要調(diào)用基類的構(gòu)造函數(shù), 以便分配基類的公有段程序存儲空間。 實踐上,由于調(diào)用了構(gòu)造函數(shù),一個派生類對象包含有一個基類對象,只是對于派生類而言,不能訪問基類的私有段成員。基類對象 PubPriObjApriPubPri1pub1ojbB派生類對象#includeclass A int pri; public: int pub; void set_pri(int a) pri=a; void set_pub(int a) p
3、ub=a; void out_pri() coutpri“ ; ;class B: public Aint pri1; public: int pub1; void set_pri1(int a) pri1=a; void set_pub1(int a) pub1=a; void out() coutpub“ pri1“ c=10; bp-a=11; bp-b=12; 留意base:b運用的是base類的成員函數(shù)b運用的是derived類的數(shù)據(jù)成員b指向基類對象的指針變量可以指向派生類的對象由于派生類對象包含有一個基類對象錯誤:bp僅能訪問派生類中承繼的基類成員 一個派生類從外部看,非常類似一
4、個基類,但內(nèi)部那么有不同。 特別是,一個派生類沒有權(quán)益訪問它的基類的私有數(shù)據(jù),就像其他任何類一樣。 例如,edit_string類不能直接訪問string類的contents域或length域。假設(shè)edit_string類的成員函數(shù)要運用contents,必需調(diào)用get_contents()來得到它。 一個類的私有成員對其他類不可以訪問的緣由是確保沒有其他類的成員函數(shù)依賴它們。這就允許軟件順應(yīng)未來的改動,賦予面向?qū)ο蠓椒ㄒ愿蟮牟鸥伞?當從現(xiàn)成的類派生出新類時,派生類有以下功能: 1) 添加新的數(shù)據(jù)成員。 2) 添加新的成員函數(shù)。 3) 重新定義數(shù)據(jù)成員。 4) 重新定義成員函數(shù)。 從編碼的角
5、度,派生類從基類中以較低的代價換來了較大的靈敏性。一旦產(chǎn)生了可靠的基類,只需求調(diào)試派生類中所作的修正即可。 派生類從基類承繼屬性時,可使派生類擴展它們,或者對其進展限制,也可以改動刪除。一切這些變化歸結(jié)為兩類根本的面向?qū)ο蟮某欣^技術(shù):性質(zhì)約束和性質(zhì)擴展。 5.1.2 維護段 一個派生類承繼其基類時,基類的一切私有段的成員不能被派生類訪問。 例5-4 class X int i,j; public: void set_ij(int x,int y); void put_ij(); ; class Y : public X int k; public: int get_k(); void make
6、_k(); ; void Y:make_k() k=i*j; 錯誤:i,j是基類X的私有成員,不能被派生類Y訪問。 基類能否存在這樣一類成員? 它們可以被派生類訪問,但不能被其他類訪問。除了基類和它的派生類可以看到這部分成員外,對其他類好像私有段成員一樣。 重新定義為:class X protected: int i,j; public : void get_ij(); void put_ij(); ;class 類名 private: protected: public: ;私有成員段在類外不能被訪問(除非友元關(guān)系);在派生類中不能訪問 維護成員在類外不能被訪問(除非友元關(guān)系);在派生類中仍
7、為維護成員公有成員在類外能被訪問;公有成員能被承繼 除了基類和他的派生類外,維護段成員私有段成員一樣被隱藏起來。 類中可以有三種成員: 5.1.3 基類的訪問描畫符 為闡明派生關(guān)系,派生類的闡明為 class edit_string: public string ; C+言語中,派生類的普通語法方式為 class 派生類名: 基類類名,基類類名, ;關(guān)鍵字public稱為訪問描畫符其中: “:后面羅列的是基類類名表,它是由“,隔開一串元素,每個元素都是“基類類名。空聲明的類不能作為一個類的基類。表示訪問描畫符 為private ,稱為私有派生,基類的一切公有段成員和維護段成員都成為派生類私有段
8、的成員。 訪問描畫符普通有三個: public private protected 很少用 當為private或缺省時,被以為是私有派生; 為public,稱為公有派生,基類的一切公有段的元素仍是派生公有段的元素,基類的protected段的元素也是派生類protected段的元素。 1. 公有派生 在公有派生情況下,基類維護成員和公有成員的訪問全限在派生類中堅持不變。即: 1) 基類的維護成員在派生類中依然是維護成員。 2) 基類的公有成員在派生類中依然是公有成員。 3) 基類的私有成員在派生類中成為派生類的不可訪問成員。 一個類的不可訪問成員是指該類包含有這些成員,但在類內(nèi)和類外,都不能被
9、直接訪問。 因此,對于一個派生類A,類的成員有四種:私有成員,維護成員,公有成員和不可訪問成員。假設(shè)該派生類還以公有方式繼續(xù)派生出它的派生類B,那么 1) A類的維護成員在派生類B中依然是維護成員。 2) A類的公有成員在派生類B中依然是公有成員。 3) A類的私有成員和不可訪問成員在派生類B中成為派生類的不可訪問成員。#include class X protected: int i, j; public: void get_ij(); void put_ij(); ; class Y:public X int k; public: int get_k(); void make_k(); c
10、lass Z : public Y public: void f(); ; void X:get_ij() coutij; 例 5-5YXZ void X:put_ij() couti“ j“n; int Y:get_k() return k; void Y:make_k() k=i*j; void Z:f() i=2; j=3; void main() Y objY; Z objZ; objY.get_ij(); objY.put_ij(); objY.make_k(); coutobjY.get_k()“n;objZ.f();objZ.put_ij(); X公有段和維護段的成員在Y中也是公
11、有段和維護段的成員。同時,Y又公有派生出類Z,這時,Y的公有段和維護段的成員在Z中也是公有段和維護段的成員。 在公有派生方式下,一個派生類的對象可以作為基類的對象運用,詳細有3種情況: 1) 派生類的對象可以直接賦給基類的對象。 2) 基類對象的援用可以援用一個派生類對象。 3) 基類對象的指針可以指向一個派生類對象。 設(shè)基類為Base,公有派生類為Derived,那么 Base Bobj; Derived Dobj; Bobj=Dobj; Base &Bref=Dobj; Base * Bpointer=&Dobj; 2. 私有派生 假設(shè)為private(或者缺省),那么基類的一切公有段和維
12、護段的成員都成為派生類私有段的成員。稱派生類是基類的私有派生類。即: 1基類的維護成員在私有派生類中是私有成員 2基類的公有成員在私有派生類中是私有成員 3) 基類的私有成員和不可訪問成員在私有派 生類中成為派生類的不可訪問成員 例 5-6 修正公有派生中的例子如下。 #include class X protected: int i, j; public: void get_ij(); void put_ij(); ; class Z : public Y public: void f(); ; Z又由類Y公有派生,那么Y的公有段和維護段的成員成為Z的公有段和維護段成員。YXZ派生類Y由基類
13、X私有派生,X的公有段和維護段的成員在Y中變成了私有段的成員。class Y : private X int k; public: int get_k(); void make_k(); ;void X:get_ij() coutij;void X:put_ij()couti“ j“n; int Y:get_k() k=i*j; void Z:f() i=2; j=3; 錯誤:Z中為不可訪問成員錯誤 void main() Y objY; Z objZ; objY.get_ij(); objY.put_ij(); objY.make_k(); coutobjY.get_k()f(); 代碼包含
14、了一個錯誤,分析錯誤的緣由。 實踐上,C+言語還允許維護派生方式。維護派生方式下,基類的一切公有段成員和維護段成員都成為維護派生類維護段的成員; 基類的私有成員和不可訪問成員在維護派生類中成為派生類的不可訪問成員。 維護派生方式普通很少運用。基類成員的訪問性private protected public派生方式privatepublicprivatepublicprivatepublic派生類成員不可見privateprotectedprivatepublic外部函數(shù)不可見不可見不可見可見派生后基類成員訪問性的變化 3. 靜態(tài)成員的派生 static 成員受段約束符的限制,但不受訪問描畫符的
15、限制。 基類和派生類共享基類的static成員。 不論是公有派生還是私有派生都不影響派生類對基類的靜態(tài)成員的訪問,但要求訪問靜態(tài)成員時,必需用“類名:成員顯式的闡明。 例 5-7 #include class S static int s1; protected: static int s2; public: static int s3; static void set_s3() s3=1; void out() couts3; ;class D : private S public: void set() S:s1=10; S:s2=20; S:s3=30; ; Vc+可以,Tc不可以可以訪
16、問,教材錯誤void main() S objS; S:s1=0; S:s2=0; S:s3=0; objS.out(); objS.set_s3(); objS.out(); D objD; objD.set(); objS.out(); 假設(shè)沒有派生關(guān)系,結(jié)果是一樣的。 可見,派生對于基類的static成員是沒有影響的。錯誤:類外訪問私有成員錯誤:類外訪問維護段成員 類Y從基類X私有派生,因此類Y的派生類Z不能訪問間接基類X一切成員。 假設(shè)希望X的某幾個成員還能被類Z訪問,而不是像如今這樣全部變成類Y的私有成員,讓類Z根本看不到。 C+言語提供了一種調(diào)理機制,稱為訪問聲明,它使得X的某幾個
17、成員能被類Z所訪問 . 4.訪問聲明YXZ私有派生公有派生訪問聲明僅能用于私有派生情況下。訪問聲明的方式為:基類類名:基類維護段或公有段數(shù)據(jù)成員;基類類名:基類維護段或公有段成員函數(shù)名;例 5-8 class B int a; public: int b, c; int bf( ); ; class D : private B int d: public: B:c; int e; int df(); ; 運用訪問聲明 B:c 可以將類B的公有段成員c在私有派生類D中顯式聲明為公有的,D的派生類可以訪問它。 由此可見,訪問聲明是一種調(diào)理機制,它是私有派生方法的一種補充。 對訪問聲明的運用需求留意
18、以下幾點:調(diào)整對B:C的訪問控制 1)訪問聲明不能闡明任何類型。 class B int a; public: int b, c; int bf( ); ; class D: private B int d; public: int B : c; ; 不能為訪問聲明B:c闡明任何類型。 2) 訪問聲明僅用于派生類中恢復(fù)名字的訪問權(quán)限,不允許在派生類中降低或提升基類成員的可訪問性。 例 5-9 class B private: int b; protected: int c; public: int a; class D : private B public: B: a; B : b;prote
19、cted: B : c; B: a; ; 從類的封裝性的角度,這一限制是可以了解的。 試想,假設(shè)派生類能將其基類的私有段成員用訪問聲明提高其訪問權(quán)限而成為公有段的 成員,就破壞了類的封裝性。錯誤,私有成員不能用于訪問聲明錯誤,不能降低基類成員的可訪問性 3) 對重載函數(shù)名的訪問聲明將調(diào)整基類中具有該名的一切函數(shù)的訪問域。 由于訪問聲明僅僅恢復(fù)名字的訪問,對于重載函數(shù)名,它的訪問聲明將使一切同名的重載函數(shù)的訪問權(quán)限都得到調(diào)整。例如: class X public: f( ); f(int); ; class Y : private X public: X : f; ;使 X:f( )和X:f(i
20、nt)在Y中都為公有的 X:f表示訪問聲明僅僅調(diào)理名字,該函數(shù)名不帶任何參數(shù)和類型; 具有不同訪問域的重載函數(shù)名不能用于訪問聲明,即不能夠調(diào)整它的訪問權(quán)限。例 5-10 class X private: f(int); public: f( ); ; class Y : private X public: X : f; ;錯誤,訪問聲明具有二義性,不能調(diào)整其訪問 假設(shè)基類的一個成員在派生類中也把同一名字定義為一個成員,那么不可以調(diào)整它的訪問。 例 5-11 class X public: void f( ); ; class Y : private X public: void f(int);
21、 X:f; ;錯誤,f的二次闡明,不能調(diào)整其訪問 5.1.4 基類對象的初始化 1.類等級 類X出如今類Y的基類類名表中,它被稱為類Y的直接基類。 類Y也是類Z的直接基類。類X不是類Z的直接基類,但它是類Y的直接基類,稱類X為類Z的間接基類。 這樣,類X,Y和Z構(gòu)成了一個類等級,如圖: yxzclass Y : private X int k; public: int get_k();class Z : public Y public: void f();class X protected: int i, j; public: void get_ij(); 在類等級中,假設(shè)一個類只需一個直接基
22、類,這種承繼關(guān)系稱為單承繼。假設(shè)一個類有多個直接基類,這種承繼關(guān)系稱為多承繼。 在一派生類中要訪問與派生類成員同名的基類成員,運用 類名:成員 的方式,其中類名可以是某個間接基類的類名,因此成員也是這個間接基類的成員。這簡單闡明了從哪一個類開場尋覓該成員。 例 5-12 class A public: void f(); ; class B : public A ;class C: public B public: void f( ); void g( ); void C:g( ) f(); A:f(); B:f(); Void main() C Cobj; Cobj.f( ); Cobj.A
23、:f(); Cobj.B:f( ); 調(diào)用C類的f()調(diào)用A的f()調(diào)用B的f(),也就是從類A承繼的f()2. 基類對象的初始化 在建立一個類等級后,通常是經(jīng)過創(chuàng)建某個派生類的對象來運用這個類等級,包含隱含地運用基類的數(shù)據(jù)和函數(shù),但是,基類往往有構(gòu)造函數(shù)或有帶參數(shù)的構(gòu)造函數(shù)。 當創(chuàng)建一個派生類對象時,顯然,需求提供一種初始化機制使得派生類對象在創(chuàng)建時,可以經(jīng)過訪問基類的構(gòu)造函數(shù)來初始化基類的數(shù)據(jù)。 C+在派生類的構(gòu)造函數(shù)中提供這種初始化基類的機制. 在C+言語中,派生類構(gòu)造函數(shù)的聲明為: 派生類構(gòu)造函數(shù)(變元表):基類(變元表),對象成員1(變元表),,對象成員n(變元表) 基類的構(gòu)造函數(shù)(
24、多承繼中有多個基類的構(gòu)造函數(shù))對象成員的初始化表 基類運用缺省構(gòu)造函數(shù)或不帶參數(shù)的構(gòu)造函數(shù),那么派生類構(gòu)造函數(shù)聲明中“:后面的“基類(變元表)一項可以省去,但是派生類構(gòu)造函數(shù)執(zhí)行時依然隱含地調(diào)用基類的構(gòu)造函數(shù)執(zhí)行。 這個構(gòu)造函數(shù)執(zhí)行時仍遵照先兄長(基類),再客人(對象成員),后本人(派生類)的順序。#include class Base public: Base() cout“nBase createdn; ; class D_class: public Base public: D_class() cout“nD_class created n; ; 下面這個例子顯示了構(gòu)造函數(shù)的執(zhí)行順序,先
25、兄長,后本人 例 5-13void main() D_class d; 程序輸出: Base created D_class created 先執(zhí)行基類的構(gòu)造函數(shù),再執(zhí)行派生類的構(gòu)造函數(shù)。由于基類對派生類一無所知,雖然基類的初始化顯然與派生類的初始化相分別,但它能夠是派生類的先決條件。因此,初始化時先執(zhí)行基類的初始化。 執(zhí)行析構(gòu)函數(shù)時,先執(zhí)行派生類的析構(gòu)函數(shù),再執(zhí)行基類的析構(gòu)函數(shù)。緣由是可了解的,對基類的破壞隱含了對派生類的破壞,所以派生類的析構(gòu)函數(shù)必需先執(zhí)行。 基類的構(gòu)造函數(shù)先執(zhí)行,這點很重要,分析下面的例子。 例 5-14 class Base int x; public: Base(in
26、t i): x(i) ; class Derived: public Base int a; public: Derived(int i): a(i* 10), Base(a) ; Derived d(1); 時,d(1)將先引起基類構(gòu)造函數(shù)base(a)的調(diào)用,這時傳給構(gòu)造函數(shù)的值a是未定義的,并不是將初始化的a值傳給基類Base。例 5-15 #include #include class Parent int private1, private2; public: Parent(int p1, int p2) private1=p1; private2=p2; int inc1() re
27、turn +private1; int inc2() return +private2; void display() printf(“n private1=%d, private2=%d, private1, private2); ;class Derived: private Parent int private3; Parent private4; public:Derived(int p1,int p2,int p3,int p4,int p5):Parent(p1, p2),private4(p3, p4) private3=p5; int inc1() return Parent:
28、inc1(); int inc3() return +private3; void display() Parent:display(); private4.Parent:display(); printf( “n private3=%dnn, private3); ; void main() Derived_class1 d1(17,18,1,2,-5); d1.inc1(); d1.display(); 該程序輸出: private1=18, private2=18 private1=1, private2=2 private3=-5 留意: 派生類的友元只能訪問基類的維護段成員和公有段成
29、員及派生類本人的一切成員。 5.1.5 Point類承繼的一個例子 例 5-16 圖形的根本單元是屏幕上單個的點。可以用籠統(tǒng)點模擬屏幕上的物理像素,稱為Point類。 關(guān)于 Point類,有兩個根本的信息類型,一種信息描畫了點在那里,另一種信息描畫了點怎樣樣。兩者之中,位置是根本的,沒有位置,根本不能夠有一個點。一切點都要含 有一個位置,可以從一個更根本的基類Location中派生一個子類Point。 在Location類中含有關(guān)于x和y坐標的信息。Point承繼了Location中的任何東西,并加進了Point類所必需的新內(nèi)容。/point.hclass Location protected
30、: int x; int y; public: Location(int InitX,int InitY); int GetX(); int GetY();class Point: public Loctionprotected: int Visible; public: Point(int InitX, int InitY); void Show( ); void Hide( ); bool IsVisible( ); void MoveTo(int NewX, int NewY; ; /point.cpp #inclide “point.h #include Location : Loca
31、tion(int InitX, int InitY) x=InitX; y=InitY;int Location : GetX( ) return x;int Location : GetY( ) return y; Point : Point( int InitX, int InitY) : Location(InitX, InitY) Visible=false; void Point : Show( ) Visible=true; putpixel(x, y, getcolor();void Point : Hide( ) Visible=false; putpixel(x, y, ge
32、tbkcolor(); bool Point:IsVisible() return Visible; void Point:MoveTo(int NewX, int NewY) Hide(); x=NewX; y=NewY; Show(); Point類提供了一個數(shù)據(jù)Visible,表示點的形狀,并給出了幾個成員函數(shù)來訪問點的信息:顯示這個點Show(), 抹掉這個點Hide(), 得到這個點的形狀信息IsVisble(),將這點從當前位置移到新的位置MoveTo(int NewX, int NewY). 在此根底上,派生出一個新類Circle,同時提供用于顯示,隱藏,放大和減少圓的函數(shù)。 #
33、include “point.h class Circle : Point int Radius; public: Circle(int InitX,int InitY, int InitRadius); void Show(); void Hide(); void Expand(int ExpandBy); void MoveTo(int NewX, int NewY); void Contract(int ContractBy); ; Circle :Circle(int InitX, int InitY, int InitR): Point(InitX, InitY) Radius=In
34、itR; void Circle:Show() Visible=true; circle(x, y, Radius); void Cricle:Hide() unsigned int tempcolor; tempcolor = getcolor(); setcolor(getbkcolor(); Visible=false; circle(x, y, Radius); setcolor(tempcolor); void Circle:Expand(int ExpandBy) Hide(); Radius +=ExpandBy; if(Radius0) Radius=0; Show(); vo
35、id Circle:Contract(int ContractBy) Expand(-ContractBy); void Circle:MoveTo(int NewX; int NewY) Hide(); x=NewX; y=NewY; Show(); void main() int graphdriver=DETECT; int graphmode; initgraph(&graphdriver, &graphmode,“bgi); Cricle Mycircle(100,200,500); Mycircle.Show(); getch(); Mycircle.MoveTo(100,100)
36、; getch(); Mycircle.Expand(50); getch(); Mycircle.Contract(75); getch(); closegraph(); 對于Circle類,雖然沒有定義原心,但由于承繼了Point類,運用時,當作圓來進展整體思索,而不用去思索圓心是如何定義的,就像只定義一個類Circle,它定義了圓心和半徑一樣。多承繼如圖。其中Location是Point的直接基類; Point是Circle的直接基類;Location是Circle的間接基類。 5.2 多承繼 5.2.1 多承繼的概念例5-18 在上例中要求在圓內(nèi)顯示正文,應(yīng)如何處置呢? 首先定義一個叫
37、做Gmessage的新類,它從指定的x和y坐標開場顯示一個字符串,在前面,已定義了一個稱為Circle的類,它顯示一個圓。 顯然在圓內(nèi)顯示正文是一個新的類,稱它為類Mcircle, Circle 既要顯示圓,又要顯示正文,它應(yīng)同時具有類GMeessage和類Circle的特征 多派生關(guān)系如圖#include #include #include #include “point.hclass Circle : public Point protected: int Radius; public: Circle(int InitX, int InitY, int InitRadius); void
38、Show(); MCircle GMessageCircleMCircleLocationPointLocation class Gmessage: public Location char *msg; / message to be displayed int font; / BGI font to use int field; / size of field for text scaling public:GMessage(int MsgX, int MsgY, int MsgFont, int FieldSize, char *Text); void Show(); ; class MC
39、ircle : public Circle, public Gmessage public: MCircle(int McircX, int McircY, int McircRadius, int Font, char * Msg); void Show(); /show circle with message ;Circle : Circle(int InitX, int InitY, int InitRadius): Point(InitX, InitY) Rdius=InitRadius; GMessage : GMessage(int MsgX, int MsgY, int MsgF
40、ont,int FieldSize, char * Text): Location(MsgX, MsgY) Font=MsgFont; /standard fonts defined in graph.h Field=FieldSize; /width of area in which to fit text msg=Text; /point at message void Circle:Show() Visble = true; circle(x, y, Radius); /draw the circle void GMessage : Show() int size=Field/(8* s
41、trlen(msg); /8 pixels per char settextjustify(CENTER_TEXT, CENTER_TEXT); /Centers in circle settextyle(Font, HORIZ_DIR,Si z e); outtextxy(x, y, msg); settexjustify(), settextyle(), outtextxy()庫函數(shù),它們的原型在graphics.h中。settextjustify 為圖形函數(shù)設(shè)置文本的對齊方式。settextstyle 為圖形輸出設(shè)置當前的文本屬性。outtextxy 在指定位置顯示一字符串。 MCirc
42、le : MCircle(int McircX, int McircY,int McircRadius, int Font, char * Msg) : Circle(McircX,McircY,McircRadius), GMessage(McircX, McircY, Font, 2 * McircRadius, Msg) 當調(diào)用析構(gòu)函數(shù)時,調(diào)用順序與構(gòu)造函數(shù)的順序相反。假設(shè)用戶沒有提供本人的構(gòu)造函數(shù)或析構(gòu)函數(shù),C+言語將產(chǎn)生和調(diào)用缺省版本. main() int graphdriver=DETECT; int graphmode; initgraph(&graphdriver, &graphmode, “bgi); MCircle Small(250, 100, 25, SANS_SERIF_FONT, “You); Small
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 股權(quán)轉(zhuǎn)讓協(xié)議(海景酒店)
- 2025廣東職工勞務(wù)合同
- 商品房認購合同
- 2025年門面租賃合同模板
- 護士辭職申請協(xié)議書
- 個人提成協(xié)議書范本
- 大慶醫(yī)學(xué)高等專科學(xué)校《專業(yè)導(dǎo)學(xué)(物流管理)》2023-2024學(xué)年第一學(xué)期期末試卷
- 河南省鄭州市登封市重點中學(xué)2025年初三第二次(4月)調(diào)研考試化學(xué)試題試卷含解析
- 河南林業(yè)職業(yè)學(xué)院《結(jié)構(gòu)力學(xué)2》2023-2024學(xué)年第二學(xué)期期末試卷
- 四川文理學(xué)院《生物制藥工程原理和技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 陜西秦農(nóng)銀行招聘筆試真題2024
- 執(zhí)法人員禮儀規(guī)范培訓(xùn)
- 4.1 中國的機遇與挑戰(zhàn)課件 -2024-2025學(xué)年統(tǒng)編版道德與法治九年級下冊
- 2025-2030中國纖維增強聚合物(FRP)鋼筋行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 茅臺學(xué)院《汽車理論A》2023-2024學(xué)年第二學(xué)期期末試卷
- 大學(xué)美育 課程標準
- 育兒嫂合同范本內(nèi)容
- 見證取樣送檢計劃方案
- 2025年河南交通職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性測試題庫審定版
- 2024年全國職業(yè)院校技能大賽中職組(水利工程制圖與應(yīng)用賽項)考試題庫(含答案)
- 水電解質(zhì)酸堿平衡失調(diào)病人護理
評論
0/150
提交評論