版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
C++高級編程(二)張勇濤內(nèi)聯(lián)函數(shù)什么是內(nèi)聯(lián)函數(shù)(inline)內(nèi)聯(lián)函數(shù)也稱為內(nèi)嵌函數(shù),當在一個函數(shù)定義或聲明前加上關(guān)鍵字inline,則把該函數(shù)定義為內(nèi)聯(lián)函數(shù),它主要解決的問題是程序的運行效率的問題。內(nèi)聯(lián)函數(shù)如何解決運行效率的問題?
在編譯階段,編譯器就會把每次調(diào)用內(nèi)聯(lián)函數(shù)的地方都替換為該函數(shù)體內(nèi)的代碼。內(nèi)聯(lián)函數(shù)引入的原因目的:解決程序中一些函數(shù)體代碼不是很大,卻有被頻繁調(diào)用的函數(shù)的函數(shù)調(diào)用效率問題。解決方法:以目標代碼的增加為代價來換取時間上的節(jié)約。內(nèi)聯(lián)函數(shù)的定義方法在函數(shù)的定義前加上關(guān)鍵字inline使用內(nèi)聯(lián)函數(shù)的注意事項內(nèi)聯(lián)函數(shù)的定義必須出現(xiàn)在該函數(shù)第一次被調(diào)用前;內(nèi)聯(lián)函數(shù)不能有復(fù)雜的控制語句,如switch,goto和while。遞歸函數(shù)不能是內(nèi)聯(lián)函數(shù)。類結(jié)構(gòu)中所有的在類說明內(nèi)部定義的函數(shù)都是內(nèi)聯(lián)函數(shù)。內(nèi)聯(lián)函數(shù)具有與帶參的宏定義#define相同的作用和相似的機理,但內(nèi)聯(lián)函數(shù)具有宏定義所沒有的優(yōu)點而沒有缺點,它消除了宏定義的不安全性。內(nèi)聯(lián)函數(shù)與帶參宏#include<iostream>usingnamespacestd;#definef(x)x*xintmain(){intx(2);cout<<f(x)<<endl;cout<<f(x+1)<<endl;}程序運行結(jié)果:45原因:f(x)替換為2*2f(x+1)替換為2+1*2+1#include<iostream>usingnamespacestd;inlineintf(intx){returnx*x;}intmain(){intx(2);cout<<f(x)<<endl;cout<<f(x+1)<<endl;}程序運行結(jié)果: 4 9原因:f(x)替換為2*2f(x+1)替換為3*3函數(shù)重載函數(shù)重載函數(shù)重載是指同一個函數(shù)名可以對應(yīng)著多個函數(shù)的實現(xiàn);要求:編譯器能夠唯一確定調(diào)用一個函數(shù)時應(yīng)執(zhí)行哪個函數(shù)代碼;條件:參數(shù)個數(shù)不同參數(shù)類型不同注意:返回值類型不能作為重載條件重載的意義函數(shù)重載又稱為函數(shù)的多態(tài)性,是指同一個函數(shù)名對應(yīng)著多個不同的函數(shù)。所謂“不同”是指這些函數(shù)的形參表必須互不相同,或者是形參的個數(shù)不同,或者是形參是類型不同,或者是兩者都不相同,否則將無法實現(xiàn)函數(shù)重載。
例如,下面是合法的重載函數(shù):intfuncl(int,int);intfuncl(int);doublefuncl(int,long);doublefuncl(long);注意:重載函數(shù)的類型,即函數(shù)的返回類型可以相同,也可以不同。但如果僅僅是返回類型不同而函數(shù)名相同、形參表也相同,則是不合法的,編譯器會報“語法錯誤”。如:int
funcl(inta,intb);doublefuncl(inta,intb);除形參名外都相同的情況,編譯器不認為是重載函數(shù),只認為是對同一個函數(shù)原型的多次聲明。在調(diào)用一個重載函數(shù)funcl()時,編譯器必須判斷函數(shù)名funcl到底是指哪個函數(shù)。它是通過編譯器,根據(jù)實參的個數(shù)和類型對所有funcl()函數(shù)的形參一一進行比較,從而調(diào)用一個最匹配的函數(shù)。函數(shù)重載例子#include<iostream>usingnamespacestd;intadd(int,int);doubleadd(double,double);intmain(){cout<<add(5,10)<<endl;cout<<add(5.0,10.5)<<endl;}intadd(intx,inty){cout<<"int"<<endl;returnx+y;}doubleadd(doublex,doubley){cout<<"double"<<endl;returnx+y;}帶默認參數(shù)值的函數(shù)在C++語言中調(diào)用函數(shù)時,通常要為函數(shù)的每個形參給定對應(yīng)的實參。若沒有給出實參,則按指定的默認值進行工作。當一個函數(shù)既有定義又有聲明時,形參的默認值必須在聲明中指定,而不能放在定義中指定。只有當函數(shù)沒有聲明時,才可以在函數(shù)定義中指定形參的默認值。默認值的定義必須遵守從右到左的順序,如果某個形參沒有默認值,則它左邊的參數(shù)就不能有默認值。如:voidfuncl(inta,doubleb=4.5,intc=3);//合法voidfuncl(inta=1,doubleb,intc=3);//不合法在進行函數(shù)調(diào)用時,實參與形參按從左到右的順序進行匹配,當實參的數(shù)目少于形參時,如果對應(yīng)位置形參又沒有設(shè)定默認值,就會產(chǎn)生編譯錯誤;如果設(shè)定了默認值,編譯器將為那些沒有對應(yīng)實參的形參取默認值。注意形參的默認值可以是全局常量、全局變量、表達式、函數(shù)調(diào)用,但不能為局部變量。例如,下例不合法:voidfuncl(){intk;voidg(intx=k);//k為局部變量}使用缺省參數(shù)時,主要滿足函數(shù)重載條件;voidfun(intx,inty=0);voidfun(intx);此時函數(shù)fun不能進行重載,因為編譯器不能唯一確定調(diào)用哪個函數(shù)(fun(3)或fun(3,0)均可)。指針與函數(shù)函數(shù)的實參與形參調(diào)用函數(shù)的實參與形參之間具有三種傳遞方式:傳值方式地址傳遞引用傳遞利用指針作函數(shù)參數(shù),可以方便地實現(xiàn)地址傳遞。函數(shù)可以返回指針,指針也可以指向函數(shù)。指針型函數(shù)除了void類型的函數(shù)之外,函數(shù)在調(diào)用結(jié)束后都會有返回值,指針同樣也可以作為函數(shù)的返回值。當一個函數(shù)的返回值是指針類型時,這個函數(shù)就是指針型函數(shù)。通常非指針函數(shù)調(diào)用結(jié)束后,可以返回一個變量,但是這樣每次調(diào)用只能返回一個數(shù)據(jù),有時需要從被調(diào)函數(shù)返回一批數(shù)據(jù)到主調(diào)函數(shù)中,這時可以通過指針型函數(shù)來解決。指針型函數(shù)在調(diào)用后返回一個指針,通過指針中存儲的地址值,主調(diào)函數(shù)就能訪問該地址中存放的數(shù)據(jù),并通過指針算術(shù)運算訪問這個地址的前、后內(nèi)存中的值。因此,通過對空間的有效組織(如數(shù)組、字符串等能前后順序存放多個變量的數(shù)據(jù)類型),就可以返回大量的數(shù)據(jù)。指針型函數(shù)定義指針型函數(shù)的函數(shù)頭的一般語法格式為:
數(shù)據(jù)類型*函數(shù)名(參數(shù)表)其中,數(shù)據(jù)類型是函數(shù)返回的指針所指向數(shù)據(jù)的類型;*函數(shù)名聲明了一個指針型的函數(shù);參數(shù)表是函數(shù)的形參列表。例如:int*fun(a,b)它表示函數(shù)fun返回一個指針值,這個指針指向一個整形數(shù)據(jù),a、b是形參。例子#include<iostream>usingnamespacestd;constchar*string_name(intn){constchar*string[]={"illegalstring","string1","string2","string3"};return(n<1||n>3)?string[0]:string[n];}intmain(){constchar*p;intn=0;p=string_name(n);cout<<p<<endl;}函數(shù)指針函數(shù)指針(函數(shù)的入口地址可賦給指針)雖然函數(shù)不是變量,仍占存儲空間,此空間的首地址——函數(shù)入口地址。函數(shù)指針就是指向函數(shù)的指針。定義函數(shù)指針的語法格式為:數(shù)據(jù)類型(*函數(shù)指針名)(參數(shù)表);例如:int(*p)(int,int);就定義了一個函數(shù)指針p,它指向一個返回整型值,有兩個整型參數(shù)的函數(shù)。函數(shù)指針由于函數(shù)名是函數(shù)在內(nèi)存中的首地址,因此可以賦給函數(shù)指針變量。賦值的一般語法格式為:函數(shù)指針名=函數(shù)名或&函數(shù)名;當函數(shù)指針指向某函數(shù)以后,可以用下列形式調(diào)用函數(shù):(*指針變量)(實參表列)例如:int(*fp)(char);intf(char);fp=&f;則inti=f('a');和inti=(*fp)('a');是等同的。函數(shù)指針數(shù)組與定義一般變量指針數(shù)組一樣,C++語言中也可以定義具有特定返回類型和特定參數(shù)類型的函數(shù)指針數(shù)組。函數(shù)指針數(shù)組也可以多維的,不過在實際編程中多只用到一維函數(shù)指針數(shù)組。定義它的語法格式如下:數(shù)據(jù)類型(*函數(shù)指針名[常量表達式])(參數(shù)表);例如:int(*p[5])(int,int);就定義了一個含有5個元素的函數(shù)指針數(shù)組,其中的每個元素都是一個指向函數(shù)的指針,且指向的函數(shù)都是返回值類型為整型,帶兩個整型參數(shù)的函數(shù)。注意C++不能把函數(shù)當做參數(shù)傳遞,但傳遞函數(shù)指針允許。voidsort(void*base,intn,intsz,int(*cmp)(void*,void*)){}void*性質(zhì):任何類型的指針都可以賦給它。作為參數(shù)傳入指向任何類型的指針都可與它匹配。sizeof運算符的使用sizeof運算符的特點sizeof是運算符,不是函數(shù)。sizeof的操作結(jié)果類型為size_t,利用typedef對unsignedint做了別稱。它返回操作數(shù)或者類型在內(nèi)存中的字節(jié)長度。sizeof具有三種使用方式:sizeof(數(shù)據(jù)類型)sizeof(變量名稱)sizeof變量名稱Const與#defineconst與#define的比較盡量使用含義直觀的常量來表示那些將在程序中多次出現(xiàn)的數(shù)字和字符串。例如:#defineMAX100/*C語言的宏常量*/constintMAX=100;//C++語言的const常量constfloatPI=3.14159;//C++語言的const常量const與#define的比較C++語言可以用const來定義常量,也可以用#define來定義常量。但前者比后者有更多的優(yōu)點:const常量有數(shù)據(jù)類型,而宏常量沒有數(shù)據(jù)類型。編譯器可以對前者進行類型安全檢查。而對后者只進行字符替換,沒有類型安全檢查,并且在字符替換可能會產(chǎn)生意料不到的錯誤。參數(shù)和數(shù)據(jù)保護C中常用的宏定義:#defineSS80#define在編譯時只做簡單的替換,而不做類型檢查,會隱藏一些錯誤,例如:#defineBBB200#defineAAA100+BBBinta;a=AAA*2;直接替換的結(jié)果是a=100+200*2;而不是理想中的a=(100+200)*2。C++中使用const代替#define,const性質(zhì)類似變量,但是值不可以改變。例:constbuf=100;(默認int型)constintbuf=100;常量和數(shù)據(jù)保護使用const的另外一個好處是簡單情況下進行常量折疊:在編譯時預(yù)先計算常量表達式的結(jié)果;例如:consts=3*100+20;使用時直接是結(jié)果320;對const變量可以聲明extern例如:constintsize=3;externconstintsize;例子使用運行期間產(chǎn)生的值初始化一個新定義的變量,并用const限制,防止在后面的程序中改變它:#include<iostream>usingnamespacestd;constinti=100;constintj=i+10;charbuf[j+10];intmain(){constcharc=cin.get();constcharc2='a';cout<<c2<<endl;cout<<c<<endl;return0;}Const與指針const與指針關(guān)鍵字const放在不同的位置表示的意義也不相同:關(guān)鍵字const放在指針類型前,就是聲明一個指向變量的指針。此時,在程序中不能通過指針來改變它所指向的值,但是指針本身的值可以改變,即指針可以指向其他數(shù)據(jù)。關(guān)鍵字const放在“*”號和指針名之間,就是聲明一個指針常量(也稱常指針)。因此,指針本身的值不可改變,也即它不能再指向其他數(shù)據(jù),但它所指向的數(shù)據(jù)的值可以改變。關(guān)鍵字const在上述兩個地方都加,則是聲明一個指向常量的指針常量,指針本身的值不可改變,它所指向的數(shù)據(jù)的值也不能通過指針改變。例子注意可以把一個非const對象的地址賦給一個const指針,但不能把一個const變量的地址賦給指向非const的指針,否則會無形中改變常量的值:例如:constintn=1;int*pInt;pInt=&n;//錯誤*pInt=2;int*pInt=(int*)&n;//不好Void指針和const指針空類型void空類型——void是C++中的一種特殊類型:除指針基類型外,任何變量不能void;函數(shù)的參數(shù)可以是void,表示函數(shù)沒有任何參數(shù);函數(shù)的返回可以是void,表示函數(shù)不返回任何結(jié)果;指針的基類型可以是void,表示該指針變量可以變換指向任何類型。但在實際使用該指針前,必須顯示地進行類型指定。void指針和const指針一般來說,只能用指向相同類型的指針給另一個指針賦值,而在不同類型的指針之間進行賦值是錯誤的。比如:inta,b;int*p1=&a,*p2=p1;//正確而:double*p2=p1;//錯誤上述語句中的兩個指針p1,p2指向的類型不同,因此,除非進行強制類型轉(zhuǎn)換,否則它們之間不能相互賦值。但是void指針是一個特例。void指針和const指針void指針的定義格式為:void*p;表示指針變量p不指向一個確定的類型數(shù)據(jù),它的作用僅僅是用來存放一個地址。void指針是一個萬能指針,任何類型指針可以直接轉(zhuǎn)換為void指針。但從void指針向特定數(shù)據(jù)類型轉(zhuǎn)換的時候需要強制類型轉(zhuǎn)換。inta;int*p1=&a;void*p2=p1;int*p4=(int*)p2;const與函數(shù)對值傳遞的函數(shù)參數(shù),const修飾沒有實際意義;返回值為內(nèi)部數(shù)據(jù)類型時,const修飾同樣無意義;因為二者皆傳遞數(shù)據(jù)的副本,而與源數(shù)據(jù)是否const無關(guān),但要注意,一般情況下不使用const修飾:如果參數(shù)是指針,且僅作輸入用,則應(yīng)在類型前加const,以防止該指針在函數(shù)體內(nèi)被意外修改。如果輸入?yún)?shù)以值傳遞的方式傳遞對象,則宜改用“const&”方式來傳遞,這樣可以省去臨時對象的構(gòu)造和析構(gòu)過程,從而提高效率。在C++中,傳遞一個參數(shù)時,通常先選擇通過引用傳遞,而且是通過常量(const)引用。register和auto的用法register用register聲明的變量稱為寄存器變量,在可能的情況下會直接存放在機器的寄存器中;但對32位編譯器不起作用,當globaloptimizations(全局優(yōu)化)的時候,它會做出選擇是否放在自己的寄存器中,用戶無法控制;不過與register關(guān)鍵字有關(guān)的其他符號都對32位編譯器有效。一般不用auto存儲類型標識符,表明變量(自動)具有本地范圍,塊范圍的變量聲明(如for循環(huán)體內(nèi)的變量聲明)默認為auto存儲類型。extern的用法用extern聲明的變量或函數(shù)應(yīng)該在別的文件或同一文件的其他地方定義(實現(xiàn))。在文件內(nèi)聲明一個變量或函數(shù)默認為可被外部使用。多個文件共享的變量,用extern通知編譯器同名同類型變量引用同一存儲區(qū)被extern修飾的變量(外部變量)是靜態(tài)分配空間的,即程序開始時分配,結(jié)束時釋放。在C++,還可用來指定使用另一語言進行鏈接,這時需要與特定的轉(zhuǎn)換符一起使用。目前MicrosoftC/C++僅支持“C”轉(zhuǎn)換標記,來支持C編譯器鏈接。使用這種情況有兩種形式:extern“C”聲明語句extern“C”{聲明語句塊}volatile編譯器有一種技術(shù)叫做數(shù)據(jù)量分析,分析程序中的變量在哪里賦值,在哪里使用、在哪里失效,分析結(jié)果可以用于常量合并,常量傳播等優(yōu)化。但有時這些優(yōu)化不是程序所需要的,這時可以用volatile關(guān)鍵字禁止做這些優(yōu)化,常用于像中斷處理程序之類的異步進程進行內(nèi)存單元訪問。volatile的字面含義是直接存取原始內(nèi)存地址。volatile的作用是限定一個對象可被外部進程(操作系統(tǒng)、硬件或并發(fā)線程等)改變,聲明時的語法如下:intvolatilenVint;volatile關(guān)鍵字用于聲明內(nèi)存映射的易失型變量,這里變量的值隨時可能由于某種編譯器所不知道的原因(例如,外部設(shè)備對其寫入)所改變,所以編譯器在進行代碼優(yōu)化時不能對其做任何的假設(shè)和依賴。volatile的作用volatile有下面的作用:不會再兩個操作之間把volatile變量緩存在寄存器中。在多任務(wù)、中斷、甚至setjmp環(huán)境下,變量可能被其他的程序改變,編譯器自己無法知道,volatile就是告訴編譯器這種情況。不在常量合并、常量傳播等優(yōu)化,所以像下面的代碼:volatileinti=1;if(i>0)…if的條件不會當做無條件真。對volatile變量的讀寫不會被優(yōu)化掉。如果你對一個變量賦值但后面沒用到,編譯器常??梢允÷阅莻€賦值操作,然而對MemoryMappedIO的處理是不能這樣優(yōu)化的。volatile的作用volatile有下面的作用:不會再兩個操作之間把volatile變量緩存在寄存器中。在多任務(wù)、中斷、甚至setjmp環(huán)境下,變量可能被其他的程序改變,編譯器自己無法知道,volatile就是高手編譯器這種情況。不在常量合并、常量傳播等優(yōu)化,所以像下面的代碼:volatileinti=1;if(i>0)…if的條件不會當做無條件真。對volatile變量的讀寫不會被優(yōu)化掉。如果你對一個變量賦值但后面沒用到,編譯器常??梢允÷阅莻€賦值操作,然而對MemoryMappedIO的處理是不能這樣優(yōu)化的。volatile的用法中斷服務(wù)程序中修改的供其他程序檢測的變量需要加volatile;多任務(wù)環(huán)境下各任務(wù)間共享的標志應(yīng)該加volatile;存儲器映射的硬件寄存器通常也要加volatile說明,因為每次對它的讀寫都可能有不同意義;Malloc與free、new與delete動態(tài)內(nèi)存分配所謂動態(tài)內(nèi)存分配是指在程序運行期間根據(jù)實際需要隨時申請內(nèi)存,并在不需要時釋放。應(yīng)用程序數(shù)據(jù)所占的內(nèi)存可以分為3類:靜態(tài)存儲區(qū):在程序運行開始前就分配的存儲空間都在靜態(tài)存儲區(qū)中;棧:局部變量的分配的存儲空間在棧中;堆:動態(tài)內(nèi)存分配的存儲空間在堆中,堆也稱為自由存儲單元。malloc與free、new與delete的比較malloc/free是C++語言的標準庫函數(shù)不是運算符,不在編譯器控制權(quán)限之內(nèi),new/delete是C++的運算符。它們都可用于申請動態(tài)內(nèi)存和釋放內(nèi)存。對于非內(nèi)部數(shù)據(jù)類型的對象而言,光用malloc/free無法滿足動態(tài)對象的要求malloc與free的用法函數(shù)malloc的原型如下:void*malloc(size_tsize);用malloc申請一塊長度為length的整數(shù)類型的內(nèi)存,程序如下:int*p=(int*)malloc(sizeof(int)*length);malloc返回值的類型是void*,所以在調(diào)用malloc時要顯式地進行類型轉(zhuǎn)換,將void*轉(zhuǎn)換成所需要的指針類型。在malloc的“()”中使用sizeof運算符是良好的風(fēng)格函數(shù)free的原型如下:voidfree(void*memblock);new運算符new運算符的語法格式為:指針=new數(shù)據(jù)類型;指針應(yīng)預(yù)先聲明,指針指向的數(shù)據(jù)類型與new后的數(shù)據(jù)類型相同。若申請成功,則返回分配單元的首地址給指針;否則(比如沒有足夠的內(nèi)存空間),則返回0(一個空指針)。例如:int*p;p=newint;系統(tǒng)自帶根據(jù)int類型的空間大小開辟一個內(nèi)存單元,用來保存int型數(shù)據(jù),并將地址保存在指針p中。在申請分配內(nèi)存單元時,也可以指定分配的內(nèi)存大小。例如:int*p;p=newint[30];則系統(tǒng)為指針p分配了30個int的內(nèi)存單元存放int型數(shù)據(jù)。new運算符對于動態(tài)創(chuàng)建多維數(shù)組,情況要復(fù)雜一些。以二維數(shù)組為例,語法格式為:指針=new數(shù)據(jù)類型[常量表達式1][常量表達式2];若申請成功,指針指向分配的內(nèi)存首地址,但此時指針的類型不是new后的數(shù)據(jù)類型,而是一個該類型的數(shù)組,即指針是一個數(shù)組指針。例如:int(*p)[3];p=newint[2][3];則系統(tǒng)為指針p分配了一個二維數(shù)組。delete運算符delete運算符的功能是用來刪除是用new創(chuàng)建的對象或一般類型的指針,其格式如下:delete<指針名>A*ptr=newA(5,6);deleteptr;使用delete也可以用來刪除使用new創(chuàng)建的對象數(shù)組,其使用格式如下:delete[]指針名例子#include<iostream>#include<stdlib.h>usingnamespacestd;classCTest{public:CTest();~CTest();private:intm_nMember;};CTest::CTest(){m_nMember=100;cout<<“ConstrutorCTest"<<this<<en
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度電梯安全知識競賽組織與實施合同3篇
- 二零二五版礦山勞務(wù)合同范本:礦山安全生產(chǎn)監(jiān)督協(xié)議3篇
- 基于2025年度財務(wù)軟件系統(tǒng)的定制開發(fā)合同3篇
- 2025年度臨時安保服務(wù)勞務(wù)合同實施細則4篇
- 2025年度光伏電站變壓器供貨與安裝服務(wù)合同3篇
- 2025年度環(huán)保節(jié)能照明設(shè)備研發(fā)與推廣合同3篇
- 2024-2025學(xué)年高中語文第一課走進漢語的世界3四方異聲-普通話和方言練習(xí)含解析新人教版選修語言文字應(yīng)用
- 2025年度水路貨物運輸貨物保險理賠代理合同(GF定制版)
- 2025年校園食堂食品安全追溯原料采購管理服務(wù)合同3篇
- 二零二四年在建工業(yè)地產(chǎn)轉(zhuǎn)讓合同范本3篇
- 英語名著閱讀老人與海教學(xué)課件(the-old-man-and-the-sea-)
- 學(xué)校食品安全知識培訓(xùn)課件
- 全國醫(yī)學(xué)博士英語統(tǒng)一考試詞匯表(10000詞全) - 打印版
- 最新《會計職業(yè)道德》課件
- DB64∕T 1776-2021 水土保持生態(tài)監(jiān)測站點建設(shè)與監(jiān)測技術(shù)規(guī)范
- ?中醫(yī)院醫(yī)院等級復(fù)評實施方案
- 數(shù)學(xué)-九宮數(shù)獨100題(附答案)
- 理正深基坑之鋼板樁受力計算
- 學(xué)校年級組管理經(jīng)驗
- 10KV高壓環(huán)網(wǎng)柜(交接)試驗
- 未來水電工程建設(shè)抽水蓄能電站BIM項目解決方案
評論
0/150
提交評論