南開大學(xué)C++課件 第9章 模板及其應(yīng)用.ppt_第1頁(yè)
南開大學(xué)C++課件 第9章 模板及其應(yīng)用.ppt_第2頁(yè)
南開大學(xué)C++課件 第9章 模板及其應(yīng)用.ppt_第3頁(yè)
南開大學(xué)C++課件 第9章 模板及其應(yīng)用.ppt_第4頁(yè)
南開大學(xué)C++課件 第9章 模板及其應(yīng)用.ppt_第5頁(yè)
已閱讀5頁(yè),還剩45頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1,第9章 模板及其應(yīng)用,9.1 函數(shù)模板 9.2 類模板 9.3 關(guān)于類模板若干問題的說(shuō)明 9.4 程序?qū)嵗?本章介紹函數(shù)模板與類模板的定義及其使用方法。通過(guò)使用模板,可使所編程序更加緊湊,增加程序的通用性及可重用性。,2,9.1 函數(shù)模板 9.1.1 函數(shù)模板的概念及說(shuō)明 9.1.2 函數(shù)模板的應(yīng)用舉例 - 9.1.1 函數(shù)模板的概念及說(shuō)明 - 參看書p299-301 通常設(shè)計(jì)的算法(處理語(yǔ)句)是可以處理多種數(shù)據(jù)類型的,但目前處理相同的問題,仍要分別定義多個(gè)類似的函數(shù)。,3,int max (int a, int b) if(ab) return a; else return b; dou

2、ble max (double a, double b) if(ab) return a; else return b; char max (char a, char b) . .,4,實(shí)際上,若“提取”出一個(gè)可變化的類型參數(shù)T,則可“綜合”成為如下的同一個(gè)函數(shù)(模板),它實(shí)際上代表著一組函數(shù): T max (T a, T b) if(ab) return a; else return b; 在C+中定義完整的函數(shù)模板max時(shí),格式如下: template T max (T a, T b) if(ab) return a; else return b; ,5,函數(shù)模板定義的一般格式為: tem

3、plate 返回類型 函數(shù)模板名 ( 形參表 ) 函數(shù)體 注意: 1) 應(yīng)在“返回類型”或“形參表”或“函數(shù)體”中使用上述的“類型形參名” 。 2) 調(diào)用處則類似于一般函數(shù),用戶只需給出具體的實(shí)參。 3) 模板函數(shù)調(diào)用時(shí),不進(jìn)行實(shí)參到形參類型的自動(dòng)轉(zhuǎn)換。,6,9.1.2 函數(shù)模板的應(yīng)用舉例 - 參看書p302,1. 函數(shù)模板例1 定義一個(gè)函數(shù)模板max,而后對(duì)它進(jìn)行不同的調(diào)用。 #include template T max (T a, T b) if(ab) return a; else return b; ,7,void main() int i1=-11, i2=0; double d1

4、, d2; coutd1d2; coutmax(d1,d2)endl; /coutmax(23,-5.6) = max(23,-5.6)endl; /出錯(cuò)! 不進(jìn)行實(shí)參到形參類型的自動(dòng)轉(zhuǎn)換 ,8,程序執(zhí)行后的顯示結(jié)果如下: int i1=-11, i2=0; = max(i1,i2) = 0 max(23,-56) = 23 char c1=T, c2=F; = max(c1,c2) = T max(f, k) = k input double d1, d2 : 123.45 99.67 d1=123.45, d2=99.67 = max(d1,d2) = 123.45 2. 函數(shù)模板例2 -

5、 函數(shù)模板與函數(shù)重載 定義一個(gè)函數(shù)模板與一個(gè)函數(shù),它們都叫做min,C+允許這種函數(shù)模板與函數(shù)同名的所謂重載使用方法。但注意,在這種情況下,每當(dāng)遇見函數(shù)調(diào)用時(shí),C+編譯器都將首先檢查是否存在重載函數(shù),若匹配成功則調(diào)用該函數(shù),否則再去匹配函數(shù)模板。,9,#include #include template type min (type a, type b) /type型的a與b要能夠進(jìn)行“”比較運(yùn)算! return (ab?a:b); char* min (char* a, char* b) /函數(shù)min,字符串型參數(shù),不能直接使用“”來(lái)進(jìn)行比較 return (strcmp(a,b)0?a:b

6、); void main() coutmin(3,-10)endl;/使用函數(shù)模板 coutmin(2.5,99.5)endl; coutmin(m,c)endl; char* str1=The C program, * str2=The C+ program; coutmin(str1, str2)endl;/使用重載函數(shù)! ,10,3. 函數(shù)模板例3 - 二函數(shù)模板重載 定義兩個(gè)函數(shù)模板,它們都叫做sum,都使用了一個(gè)類型參數(shù)Type,但兩者的形參個(gè)數(shù)不同,C+允許使用這種函數(shù)模板重載的方法。 注意,參數(shù)表中允許出現(xiàn)與類型形參Type無(wú)關(guān)的其它類型的參數(shù),如“int size”。 #inc

7、lude template Type sum (Type * array, int size ) /求array數(shù)組前size個(gè)元素之和 Type total=0; for (int i=0;isize;i+) total+=*(array+i); return total; ,11,template Type sum (Type * a1, Type * a2, int size ) /求a1數(shù)組與a2數(shù)組前size個(gè)元素之和 Type total=0; for (int i=0;isize;i+) total+=a1i+a2i; return total; void main() int

8、a110,a28; float af10; . /為數(shù)組分量定值 coutsum(a1,10)endl; /求出a1數(shù)組前10個(gè)元素之和并輸出 coutsum(af,10)endl; coutsum(a1,a2,8)endl; /求a1與a2數(shù)組前8個(gè)元素之和并輸出 ,12,9.2 類模板 9.2.1 一個(gè)隊(duì)列類模板 9.2.2 類模板說(shuō)明 9.2.3 使用類型參數(shù)和普通參數(shù)的類模板,13,9.3.1 設(shè)計(jì)一個(gè)隊(duì)列類模板 - 參看書p305,隊(duì)列與棧不同,對(duì)數(shù)據(jù)采用“先進(jìn)先出”-FIFO的管理方式(而棧則使用“先進(jìn)后出”-FILO方式)。 隊(duì)列數(shù)據(jù)放于作為類成員的動(dòng)態(tài)數(shù)組queue之中,在構(gòu)造

9、函數(shù)中,將通過(guò)new來(lái)生成該動(dòng)態(tài)數(shù)組,動(dòng)態(tài)數(shù)組queue的大小由類的私有數(shù)據(jù)成員Maxsize之值來(lái)確定。但注意,此示例并沒有循環(huán)使用上述的動(dòng)態(tài)數(shù)組queue空間。即是說(shuō),隊(duì)列中至多可以存放Maxsize個(gè)數(shù)據(jù)項(xiàng),即使取走若干項(xiàng)后有了空閑空間后也不可重新進(jìn)行使用。若稍加改造,使存取數(shù)據(jù)時(shí)首先通過(guò)對(duì)下標(biāo)進(jìn)行模Maxsize的運(yùn)算,則可實(shí)現(xiàn)循環(huán)使用動(dòng)態(tài)數(shù)組queue空間的功能,我們把它留作一個(gè)練習(xí)。,14,#include #include template class Queue int Maxsize; /隊(duì)列的大小 int front,rear; /元素放在queuefront+1到queu

10、erear之中 keytype *queue; /動(dòng)態(tài)數(shù)組queue,用來(lái)存放隊(duì)列數(shù)據(jù) public: Queue (int size) /構(gòu)造函數(shù),生成動(dòng)態(tài)數(shù)組來(lái)存放隊(duì)列數(shù)據(jù) Maxsize=size; queue=new keytypeMaxsize; front=rear=-1; /意味著隊(duì)列為空 ;,15,int IsFull () if (rear=Maxsize-1) return 1; else return 0; ; int IsEmpty () if (front=rear) return 1; else return 0; ; void Add(const keytype

11、,16,/Delete在類體外定義,函數(shù)名前要加類限定符“Queue:” template keytype Queue:Delete(void) if (IsEmpty() cout void Queue:Add(const keytype ,17,void main() int i=0; Queue Qi(10); Queue Qf1(10),Qf2(10); while (!Qi.IsFull() /Qi中只能盛10個(gè)數(shù) Qi.Add(2*i+); /Qi中: 0,2,4,6,8,10,12,14,16,18 Qf1.Add(3.0*i); /Qf1中: 3,6,9,12,15,18,21

12、,24,27,30 for (i=0; i4; i+) /四次循環(huán),每次總 /先往Qf2的隊(duì)列尾部加入兩個(gè)數(shù),而后又從首部刪取一個(gè)數(shù)并輸出 Qf2.Add(4.5*Qi.Delete(); /從Qi首刪取一元素,乘以4.5,而后將其加入到Qf2尾部 /四次循環(huán)往Qf2隊(duì)列尾加入:0*4.5,2*4.5,4*4.5,6*4.5 . 程序執(zhí)行后的顯示結(jié)果如下: 0 1.5 9 3,18,9.2.2 類模板說(shuō)明 利用類模板(帶類型參數(shù)或普通參數(shù)的類),一次就可定義出具有共性的一組類。 即,可使得所定義類中的某些數(shù)據(jù)成員、某些成員函數(shù)的參數(shù)、某些成員函數(shù)的返回值都可以是任意類型的。,19,類模板定義格

13、式如下: template class 類模板名 帶上述類型形參或普通形參名的類定義體 說(shuō)明類型形參時(shí),使用“class 類型形參名”的方式,說(shuō)明普通形參時(shí),使用“ 普通形參名”的方式。 注意: 1) 類定義體中應(yīng)使用上述的“類型形參名”及“普通形參名”。 2) 利用類模板說(shuō)明類對(duì)象時(shí),要隨類模板名同時(shí)給出對(duì)應(yīng)于類型形參或普通形參的具體實(shí)參(從而實(shí)例化為一個(gè)具體的類)。說(shuō)明格式為: 類模板名 注意:類型形參的相應(yīng)實(shí)參為類型名,而普通形參的相應(yīng)實(shí)參必須為一個(gè)常量。,20,3) 類模板的成員函數(shù)既可以在類體內(nèi)進(jìn)行說(shuō)明(自動(dòng)按內(nèi)聯(lián)函數(shù)處理),也可以在類體外進(jìn)行說(shuō)明。 在類體外說(shuō)明(定義)時(shí)使用如下格

14、式: template 返回類型 類模板名 : 函數(shù)名( 形參表 ) . /函數(shù)體 ; 上述的“形參1的名字”來(lái)自于“形參1的說(shuō)明”,由“甩掉”說(shuō)明部分的“類型”而得,是對(duì)類型形參或普通形參的使用。而 “類模板名 :”所起的作用正是在類體外定義成員函數(shù)時(shí)在函數(shù)名前所加的類限定符!,21,例如,對(duì)具有一個(gè)類型參數(shù)T的類模板TestClass,在類體外定義其成員函數(shù)getData時(shí)的大致樣式如下: template T TestClass:getData( 形參表 ) . /函數(shù)體 ; 其中的“TestClass:”所起的作用正是在類體外定義成員函數(shù)時(shí)在函數(shù)名前所加的類限定符!,22,9.2.3使

15、用類型參數(shù)和普通參數(shù)的類模板,1 僅使用類型參數(shù)的類模板 #include template class TestClass public: T buffer10; /T類型的數(shù)據(jù)成員buffer數(shù)組大小固定為10 (靈活性差!) T getData(int j); /獲取T類型buffer(數(shù)組)的第j個(gè)分量 ; template T TestClass:getData(int j) return *(buffer+j); ;,23,void main() TestClass ClassInstA; /char取代T,從而實(shí)例化為一個(gè)具體的類 char cArr6=abcde; for(in

16、t i=0; i5; i+) ClassInstA.bufferi=cArri; for(i=0; i5; i+) char res=ClassInstA.getData(i); coutres ; coutendl;,24,TestClass ClassInstF; /實(shí)例化為另外一個(gè)具體的類 double fArr6=12.1, 23.2, 34.3, 45.4, 56.5, 67.6; for(i=0; i6; i+) ClassInstF.bufferi=fArri-10; for(i=0; i6; i+) double res=ClassInstF.getData(i); coutr

17、es ; coutendl; 程序執(zhí)行后的顯示結(jié)果如下: a b c d e 2.1 13.2 24.3 35.4 46.5 57.6,25,2 僅使用普通參數(shù)(非類型參數(shù))的類模板示例,#include template class TestClass public: int bufferi; /使buffer的大小可變化,但其類型則固定為int(靈活性差!) int getData(int j); ; template int TestClass:getData(int j) return *(buffer+j); ;,26,void main() TestClass ClassInstF

18、; double fArr6=12.1, 23.2, 34.3, 45.4, 56.5, 67.6; for(i=0; i6; i+) ClassInstF.bufferi=fArri-10; for(i=0; i6; i+) double res=ClassInstF.getData(i); coutres ; coutendl; 程序執(zhí)行后的顯示結(jié)果如下: 2 13 24 35 46 57,27,3 既使用類型參數(shù)又使用 普通參數(shù)的類模板示例,#include #include string.h template class TestClass public: T bufferi; /T類

19、型的buffer,其大小隨普通形參i的值變化(靈活性大!) T getData(int j); ; template T TestClass:getData(int j) return *(buffer+j); ;,28,void main() TestClass ClassInstA; char cArr6=abcde; strcpy(ClassInstA.buffer, cArr); for(int i=0; i5; i+) char res=ClassInstA.getData(i); coutres ; coutendl;,29,TestClass ClassInstF; double

20、 fArr6=12.1, 23.2, 34.3, 45.4, 56.5, 67.6; for(i=0; i6; i+) ClassInstF.bufferi=fArri-10; for(i=0; i6; i+) double res=ClassInstF.getData(i); coutres ; coutendl; 程序執(zhí)行后的顯示結(jié)果如下: a b c d e 2.1 13.2 24.3 35.4 46.5 57.6,30,9.3 關(guān)于類模板的若干問題說(shuō)明 9.3.1 靜態(tài)成員及友元 9.3.2 特例版本 9.3.3 按不同方法來(lái)派生類模板,31,1類模板的靜態(tài)成員 類模板也允許有靜態(tài)成員

21、。實(shí)際上,它們是類模板之實(shí)例化類的靜態(tài)成員。也就是說(shuō),對(duì)于一個(gè)類模板的每一個(gè)實(shí)例化類,其所有的對(duì)象共享其靜態(tài)成員。 例如: templateclass C static T t; /類模板的靜態(tài)成員t ; 類模板的靜態(tài)成員在模板定義時(shí)是不會(huì)被創(chuàng)建的,其創(chuàng)建是在類的實(shí)例化之后。如: CAaiobj1, aiobj2; CAacobj1, acobj2; 對(duì)象 aiobj1 和 aiobj2 將共享實(shí)例化類 CA的靜態(tài)成員 int t ,而對(duì)象acobj1,acobj2 將共享實(shí)例化類CA的靜態(tài)成員 char t。,9.3.1 靜態(tài)成員及友元,32,2類模板的友元 類模板定義中允許包含友元。我們討

22、論類模板中的友元函數(shù),因?yàn)檎f(shuō)明一個(gè)友元類,實(shí)際上相當(dāng)于說(shuō)明該類的成員函數(shù)都是友元函數(shù)。 該友元函數(shù)為一般函數(shù),則它將是該類模板的所有實(shí)例化類的友元函數(shù)。 該友元函數(shù)為一函數(shù)模板,但其類型參數(shù)與類模板的類型參數(shù)無(wú)關(guān)。則該函數(shù)模板的所有實(shí)例化(函數(shù))都是類模板的所有實(shí)例化類的友元。 更復(fù)雜的情形是,該友元函數(shù)為一函數(shù)模板,且它與類模板的類型參數(shù)有關(guān)。例如,函數(shù)模板可以用該類模板作為其函數(shù)參數(shù)的類型。在友元函數(shù)模板定義與相應(yīng)類模板(的類型參數(shù))有關(guān)時(shí),該友元函數(shù)模板的實(shí)例有可能只是該類模板的某些特定實(shí)例化(而不是所有實(shí)例化)類的友元。,9.3.1 靜態(tài)成員及友元,33,大多數(shù)類模板不能任意進(jìn)行實(shí)例化

23、。也就是說(shuō)類模板的類型參數(shù)往往在實(shí)例化時(shí)不允許用任意的類(類型)作為“實(shí)參”。模板的“實(shí)參”不當(dāng),主要會(huì)在實(shí)例化后的函數(shù)成員調(diào)用中體現(xiàn)出來(lái),例如 template class stack /棧中元素類型為T 的stack 類模板 T num MAX; /num 中存放棧的實(shí)際數(shù)據(jù) int top; /top 為棧頂位置 public: stack () top=0; /構(gòu)造函數(shù) void push (T a) numtop+=a; /將數(shù)據(jù)a“壓入”棧頂 void showtop() / 顯示棧頂數(shù)據(jù) /模板中通用的showtop,顯示棧頂?shù)哪且粋€(gè)T 類型的數(shù)據(jù)/(必須為可直接通過(guò)運(yùn)算符“”來(lái)

24、顯示的數(shù)據(jù)) if (top=0) cout stack is empty! endl; else coutTop_Member:numtop-1endl; ;,9.3.2 特例版本,34,在上面的類模板stack 中,以下的實(shí)例化都是可行的: stacki1,i2; stackc1,c2; stackf1,f2; 等等。 但如果采用用戶定義類型而又未在該類中對(duì)運(yùn)算符“com1,com2; 由于在執(zhí)行com1.showtop() 函數(shù)時(shí),將需要對(duì)complex 類型的數(shù)據(jù)numtop-1 通過(guò)使用運(yùn)算符“就是不可行的了。,9.3.2 特例版本,35,如果用戶在上述情況下,需要使stack可行,

25、可有幾個(gè)辦法。 對(duì)于類complex 追加插入運(yùn)算符“:showtop() /專用于complex 類型的showtop(專門補(bǔ)充的“特例版本”),顯示棧頂?shù)?那一個(gè)complex 型數(shù)據(jù)。其中的stack為一個(gè)實(shí)例化后的模板類。 if (top=0) cout stack is empty! endl; else coutTop_Member:numtop-1.get_r(), numtop-1.get_i()endl; ,9.3.2 特例版本,36,假設(shè)自定義的復(fù)數(shù)類型complex 中具有公有的成員函數(shù)get_r()以及get_i(),用于獲取復(fù)數(shù)的實(shí)部和虛部。如此,當(dāng)實(shí)例化stack時(shí)

26、將按該特例版本的定義進(jìn)行。 概括地說(shuō),當(dāng)處理某一類模板中的可變類型T型數(shù)據(jù)時(shí),如果處理算法并不能對(duì)所有的T類型取值做統(tǒng)一的處理,此時(shí)可通過(guò)使用專門補(bǔ)充的所謂特例版本來(lái)對(duì)具有特殊性的那些T類型取值做特殊處理。 也可以對(duì)函數(shù)模板,或類模板的個(gè)別函數(shù)成員補(bǔ)充其“特例版本”定義。 例如,可將該例的showtop功能進(jìn)一步劃分,讓showtop調(diào)用另一個(gè)新增加的show函數(shù),而由show函數(shù)具體考慮對(duì)兩種情況的處理:一種處理可直接通過(guò)運(yùn)算符“”來(lái)顯示的數(shù)據(jù),另一種“特例版本”專用于處理complex類型的數(shù)據(jù)。,9.3.2 特例版本,37,實(shí)例,class complex /復(fù)數(shù)類型complex do

27、uble real, image; public: . ; template class stack T data 20; int top; public: void showtop(void); /顯示棧頂數(shù)據(jù) . ;,38,template void stack:showtop(void) /通用的showtop /(T類型數(shù)據(jù),可直接通過(guò)“:showtop(void) /專用于complex類型的showtop /顯示棧頂?shù)哪且粋€(gè)complex型數(shù)據(jù),它不可直接通過(guò)“”一次性輸出! if (top=0) cout stack is empty! endl; else coutTop_Me

28、mber:datatop-1.get_r(), “ datatop-1.get_i()endl; ,39,void main() stack s1; for (int i=1; i s1c; complex c1(1.1, 1.111), c2(2.2, 2.222); s1c.push(c1); s1c.push(c2);/“壓入”復(fù)數(shù)c2 (處于棧頂) s1c.showtop(); /調(diào)用專門補(bǔ)充的“特例函數(shù)”showtop ,40,通過(guò)繼承可以產(chǎn)生派生類。通過(guò)繼承同樣可產(chǎn)生派生的類模板。 (1)一般類(其中不使用類型參數(shù)的類)作基類,派生出類模板(其中要使用類型參數(shù))。 class CB

29、 /CB 為一般類(其中不使用類型參數(shù)),它將作為類模板CA 的基類 . ;template class CA:public CB /被派生出的CA 為類模板,使用了類型參數(shù)T,其基類CB 為一般類 T t; /私有數(shù)據(jù)為T 類型的 public: . ;,9.3.3 按照不同的方法派生類模板,41,(2)類模板作基類,派生出新的類模板。但僅基類中用到類型參數(shù)T(而派生的類模板中不使用T)。 template class CB /CB 為類模板(其中使用了類型參數(shù)T),它將作為類模板 CA 的基類 T t; /私有數(shù)據(jù)為T 類型的 public: T gett() /用到類型參數(shù)T retur

30、n t; . ; template class CA:public CB /CA 為類模板,其基類CB 也為類模板。注意,類型參數(shù)T /將被“傳遞”給基類CB,本派生類中并不使用該類型參數(shù)T double t1; /私有數(shù)據(jù)成員 public: . ; /基類的名字應(yīng)為實(shí)例化后的“CB”而并非僅使用“CB”。例如,在本例的派生類說(shuō)明中,要對(duì)基類進(jìn)行指定時(shí)必須使用“CB”而不可只使用“CB”:,42,(3)類模板作基類,派生出新的類模板,且基類與派生類中均使用同一個(gè)類型參數(shù)T。 template class CB /CB 為類模板(其中使用了類型參數(shù)T),它將作為類模板CA 的基類T t; /數(shù)

31、據(jù)成員為T 類型的 public: T gett() /用到類型參數(shù)T return t; . ; template class CA:public CB /CA 為類模板,其基類CB 也為類模板。注意,類型參數(shù)T 將被“傳遞”給基類CB;本派生類中也將使用這同一個(gè)類型參數(shù)T T t1; /數(shù)據(jù)為T 類型的 public: .;,43,(4)類模板作基類,派生出新的類模板,但基類中使用類型參數(shù)T2,而派生類中使用另一個(gè)類型參數(shù)T1(而不使用T2)。 template class CB /CB 為類模板(其中使用了類型參數(shù)T2),它將作為類模板CA 的基類 T2 t2; /數(shù)據(jù)為T2 類型的 p

32、ublic: . ; template class CA:public CB /CA 為類模板,其基類CB 也為類模板。注意,類型參數(shù)T2 將被“傳遞”給基類CB;本派生類中還將使用另一個(gè)類型參數(shù)T1 T1 t1; /數(shù)據(jù)為T1 類型的 public: . ;,9.3.3 按照不同的方法派生類模板,44,9.4 程序?qū)嵗?設(shè)計(jì)一個(gè)鏈表類模板 - 參看書p318,定義一個(gè)處理鏈表的類模板list,它含有一個(gè)類型形參T,以指出每一鏈表項(xiàng)的data數(shù)據(jù)域的類型。 #include #include ,45,template class list struct node T data; node * next; *head, *tail; /* 數(shù)據(jù)成員head與tail均為指針。其中的head總指向鏈表的首項(xiàng),而tail總指向鏈表的尾項(xiàng)。每當(dāng)準(zhǔn)備往鏈表中加入一個(gè)表項(xiàng)(及其表項(xiàng)data數(shù)據(jù))時(shí),程序中首先使用“new node”來(lái)動(dòng)態(tài)生成一個(gè)新的表項(xiàng)空間,并“填入”該表項(xiàng)的data數(shù)據(jù),而后通過(guò)指針的改變與關(guān)聯(lián),將該表項(xiàng)加入到以head為首以tail為尾的當(dāng)前鏈表結(jié)構(gòu)中(以形成一個(gè)更新后的鏈表)。 */,46,public: list() /構(gòu)造函數(shù),創(chuàng)建一個(gè)“空鏈表” head=tail=NULL; ; void I

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論