




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、1-1知識回顧知識回顧I/OI/O流的概念流的概念輸出流輸出流輸入流輸入流2異常處理異常處理第八章第八章1-3理解異常處理的概念理解異常處理的概念掌握異常處理的實(shí)現(xiàn)掌握異常處理的實(shí)現(xiàn)掌握異常處理中對象的構(gòu)造與析構(gòu)掌握異常處理中對象的構(gòu)造與析構(gòu)理解名字空間的概述理解名字空間的概述本章目標(biāo)本章目標(biāo)異常處理是異常處理是C+C+語言中重要的錯誤處理機(jī)制,語言中重要的錯誤處理機(jī)制,是提高程序容錯性的一種手段。異常處理主要是提高程序容錯性的一種手段。異常處理主要針對程序運(yùn)行時出現(xiàn)的各種異常情況,提供發(fā)針對程序運(yùn)行時出現(xiàn)的各種異常情況,提供發(fā)現(xiàn),捕獲異常的手段,并盡量減少異常對程序現(xiàn),捕獲異常的手段,并盡量
2、減少異常對程序運(yùn)行的影響。運(yùn)行的影響。有的程序雖然經(jīng)過編譯、連接成為可以運(yùn)行的程有的程序雖然經(jīng)過編譯、連接成為可以運(yùn)行的程序,但在運(yùn)行過程中難免會出現(xiàn)各種各樣的問題序,但在運(yùn)行過程中難免會出現(xiàn)各種各樣的問題,即使對那些所謂能,即使對那些所謂能“正常運(yùn)行的程序而言也正常運(yùn)行的程序而言也是如此。是如此。程序中潛在的異常問題程序中潛在的異常問題提出問題提出問題例如:例如:#include #include using namespace std;int main()float a,b,c;double x1,x2;cout請輸入一元二次方程的系數(shù)請輸入一元二次方程的系數(shù)a、b和和c的值的值:endl
3、;couta;coutb;coutc;x1=(-b+sqrt(b*b-4*a*c)/(2*a);x2=(-b-sqrt(b*b-4*a*c)/(2*a);cout方程的實(shí)根是方程的實(shí)根是:x1=x1endl;cout方程的實(shí)根是方程的實(shí)根是:x2=x2endl;return 0;從上面例子可以看出:可以從上面例子可以看出:可以“正常運(yùn)行的程序可能正常運(yùn)行的程序可能存在著許多潛在的存在著許多潛在的“隱患隱患”。程序運(yùn)行可以檢測到的。程序運(yùn)行可以檢測到的一些非正常情況稱為異常一些非正常情況稱為異常exception)。)。如除數(shù)為如除數(shù)為0、數(shù)組越界訪問、內(nèi)存空間不夠、輸入、數(shù)組越界訪問、內(nèi)存空間
4、不夠、輸入/輸輸出不正常文件找不到、輸入數(shù)據(jù)類型錯等等。出不正常文件找不到、輸入數(shù)據(jù)類型錯等等。異常是程序錯誤一種形式。異常是程序錯誤一種形式。分析問題分析問題程序中的錯誤按性質(zhì)可分為語法錯誤、邏輯錯誤程序中的錯誤按性質(zhì)可分為語法錯誤、邏輯錯誤和異常和異常3種。種。一般來說,異常的檢測和處理要完成下列任務(wù)之一般來說,異常的檢測和處理要完成下列任務(wù)之一:一:(1讓讓“用戶知道程序出現(xiàn)了異常,并退出用戶知道程序出現(xiàn)了異常,并退出程序。程序。(2讓讓“用戶知道程序出現(xiàn)了異常,允許用戶知道程序出現(xiàn)了異常,允許“用戶選擇繼續(xù)使用程序。用戶選擇繼續(xù)使用程序。(3在程序發(fā)生異常時,能夠在不打擾在程序發(fā)生異常
5、時,能夠在不打擾“用戶用戶的情況下繼續(xù)程序的運(yùn)行。的情況下繼續(xù)程序的運(yùn)行。C+C+語言異常處理機(jī)制的基本思想是將異常的檢測與處理語言異常處理機(jī)制的基本思想是將異常的檢測與處理分離。當(dāng)在一個函數(shù)體中檢測到異常條件存在,但無法確分離。當(dāng)在一個函數(shù)體中檢測到異常條件存在,但無法確定相應(yīng)的處理方法時,將引發(fā)一個異常,并由函數(shù)直接或定相應(yīng)的處理方法時,將引發(fā)一個異常,并由函數(shù)直接或間接調(diào)用檢測并處理這個異常。間接調(diào)用檢測并處理這個異常。這一基本思想用這一基本思想用3 3個保留字實(shí)現(xiàn):個保留字實(shí)現(xiàn):throwthrow、trytry和和catchcatch。在。在一般情況下,被調(diào)用函數(shù)直接檢測到異常條件的
6、存在并使一般情況下,被調(diào)用函數(shù)直接檢測到異常條件的存在并使用用throwthrow引發(fā)一個異常注意,引發(fā)一個異常注意,C+C+語言的異常是由程序員語言的異常是由程序員控制引發(fā)的,而不是由計算機(jī)硬件或程序運(yùn)行環(huán)境控制的控制引發(fā)的,而不是由計算機(jī)硬件或程序運(yùn)行環(huán)境控制的);在上層調(diào)用函數(shù)中使用);在上層調(diào)用函數(shù)中使用trytry檢測函數(shù)調(diào)用是否引發(fā)異檢測函數(shù)調(diào)用是否引發(fā)異常,檢測到的各種異常由常,檢測到的各種異常由catchcatch捕獲并作相應(yīng)處理。捕獲并作相應(yīng)處理。異常處理實(shí)現(xiàn)異常處理實(shí)現(xiàn)在在VC+6.0環(huán)境中,為了使用異常處理機(jī)制,需要進(jìn)行環(huán)境中,為了使用異常處理機(jī)制,需要進(jìn)行如下設(shè)置默認(rèn)設(shè)
7、置):如下設(shè)置默認(rèn)設(shè)置):(1選擇菜單中的選擇菜單中的project。(2在彈出的下拉菜單中選擇在彈出的下拉菜單中選擇Setting命令,出現(xiàn)命令,出現(xiàn)Settings對話框。對話框。(3打開打開C/C+選項(xiàng)卡。選項(xiàng)卡。(4在在Category中選擇中選擇 C+ Language。(5選中選中Enable exception handling復(fù)選框。復(fù)選框。在在C+程序中,任何需要檢測異常的語句程序中,任何需要檢測異常的語句包括函數(shù)調(diào)用都必須在包括函數(shù)調(diào)用都必須在try語句塊中執(zhí)行,語句塊中執(zhí)行,異常必須由緊跟著異常必須由緊跟著try語句后面的語句后面的catch語句來語句來捕獲并處理。因而,
8、捕獲并處理。因而,try與與catch總是結(jié)合使用總是結(jié)合使用。1、異常處理的語法、異常處理的語法throw、 try和和catch語句的一般語法如下:語句的一般語法如下:throw 表達(dá)式;表達(dá)式;try /try語句塊語句塊 catch(類型類型1 參數(shù)參數(shù)1) /針對類型針對類型1的異常處理的異常處理 catch(類型類型2 參數(shù)參數(shù)2) /針對類型針對類型1的異常處理的異常處理 .catch類型類型n 參數(shù)參數(shù)n) /針對類型針對類型1的異常處理的異常處理 異常處理的執(zhí)行過程如下:異常處理的執(zhí)行過程如下:(1 1控制通過正常的順序執(zhí)行到達(dá)控制通過正常的順序執(zhí)行到達(dá)trytry語句,然后
9、執(zhí)行語句,然后執(zhí)行trytry塊內(nèi)的塊內(nèi)的保護(hù)段。保護(hù)段。(2 2如果在保護(hù)段執(zhí)行期間沒有引起異常,那么跟在如果在保護(hù)段執(zhí)行期間沒有引起異常,那么跟在trytry塊后的塊后的catchcatch子句就不執(zhí)行,程序從異常被拋擲的子句就不執(zhí)行,程序從異常被拋擲的trytry塊后跟隨的最后一個塊后跟隨的最后一個catchcatch子句后面的語句繼續(xù)執(zhí)行下去。子句后面的語句繼續(xù)執(zhí)行下去。(3 3如果在保護(hù)段執(zhí)行期間或在保護(hù)段調(diào)用的任何函數(shù)中直接如果在保護(hù)段執(zhí)行期間或在保護(hù)段調(diào)用的任何函數(shù)中直接或間接的調(diào)用有異常被拋擲,則從通過或間接的調(diào)用有異常被拋擲,則從通過throwthrow運(yùn)算數(shù)創(chuàng)建的對象運(yùn)算數(shù)
10、創(chuàng)建的對象中創(chuàng)建一個異常對象可能包含一個復(fù)制構(gòu)造函數(shù))。中創(chuàng)建一個異常對象可能包含一個復(fù)制構(gòu)造函數(shù))。(4 4如果匹配的處理器未找到,則運(yùn)行函數(shù)如果匹配的處理器未找到,則運(yùn)行函數(shù)terminateterminate將被自動調(diào)將被自動調(diào)用,而函數(shù)用,而函數(shù)terminateterminate的默認(rèn)功能是調(diào)用的默認(rèn)功能是調(diào)用abortabort終止程序。終止程序。(5 5如果找到了一個匹配的如果找到了一個匹配的catchcatch處理程序,且它通過值進(jìn)行捕獲處理程序,且它通過值進(jìn)行捕獲,則其形參通過復(fù)制異常對象進(jìn)行初始化。,則其形參通過復(fù)制異常對象進(jìn)行初始化。示例示例1:#include void
11、 main()char *buf;trybuf=new char512;if(buf=0)throw 內(nèi)存分配錯誤內(nèi)存分配錯誤!;cout內(nèi)存分配成功內(nèi)存分配成功!endl;catch(char *str)cout異常引發(fā)異常引發(fā):strendl;示例示例2:#include int fun(int);void main()trycout4!=fun(4)endl;cout-2!=fun(-2)endl;cout5!=fun(5);catch (int n)coutn=n不能計算不能計算n!endl;cout程序執(zhí)行結(jié)束程序執(zhí)行結(jié)束.endl;int fun(int n)if(n=0)thro
12、w n;int s=1;for(int i=1;i=n;i+)s*=i;return s;catch處理程序的出現(xiàn)次序很重要,因?yàn)樵谝粋€處理程序的出現(xiàn)次序很重要,因?yàn)樵谝粋€try塊中,異常處理塊中,異常處理程序是按照它出現(xiàn)的次序檢查的。只要找到一個匹配的異常類型,程序是按照它出現(xiàn)的次序檢查的。只要找到一個匹配的異常類型,后面的異常處理都將被忽略。后面的異常處理都將被忽略。示例示例3:#include void fun(int code)tryif(code=0) throw code; /引發(fā)引發(fā)int類型的異常類型的異常if(code=1) throw x; /引發(fā)引發(fā)char類型的異常類型
13、的異常if(code=2) throw 12.345; /引發(fā)引發(fā)double類型的類型的異常異常catch(int n)cout捕獲整數(shù)類型:捕獲整數(shù)類型:nendl;catch(char c)cout捕獲字符類型:捕獲字符類型:cendl;catch(double d)cout捕獲雙精度類型:捕獲雙精度類型:dendl;return;void main()fun(0);fun(1);fun(2);程序中同時列出多個程序中同時列出多個catch語句時,將以語句時,將以catch語句在程序中出現(xiàn)語句在程序中出現(xiàn)的次序作類型匹配,并且只有一個匹配的的次序作類型匹配,并且只有一個匹配的catch語
14、句被執(zhí)行,其語句被執(zhí)行,其他的他的catch語句將被忽略。語句將被忽略。catch(.)是一個特殊的捕獲語句,可以捕獲任何異常,因而在是一個特殊的捕獲語句,可以捕獲任何異常,因而在任何情況下其他任何情況下其他catch子句都不被檢查。所以,子句都不被檢查。所以,catch(.)應(yīng)該放應(yīng)該放在最后。在在最后。在VC+6.0中,若中,若catch(.)不是放在所有不是放在所有catch(.)語句的最后,則會出現(xiàn)編譯錯誤。語句的最后,則會出現(xiàn)編譯錯誤。2、捕獲異常、捕獲異常示例示例1:#include void fun(int code)tryif(code=0) throw code; /引發(fā)引發(fā)
15、int類型的異常類型的異常 if(code=1) throw x; /引發(fā)引發(fā)char類型的異常類型的異常 if(code=2) throw 12.345; /引發(fā)引發(fā)double類型的異常類型的異常catch(int n) cout捕獲整數(shù)類型捕獲整數(shù)類型.nendl;catch(.) cout默認(rèn)捕獲默認(rèn)捕獲.endl;return;void main()fun(0);fun(1);fun(2);從前面異常處理的例子可以看出,調(diào)用一個函數(shù)時,除從前面異常處理的例子可以看出,調(diào)用一個函數(shù)時,除了了解函數(shù)的參數(shù)與返回值外,還必須了解函數(shù)的異常了了解函數(shù)的參數(shù)與返回值外,還必須了解函數(shù)的異常引發(fā)
16、方式,以便設(shè)計異常處理程序,應(yīng)付函數(shù)調(diào)用過程引發(fā)方式,以便設(shè)計異常處理程序,應(yīng)付函數(shù)調(diào)用過程中引發(fā)的異常。中引發(fā)的異常。異常的引發(fā)與捕獲已成為函數(shù)之間界面的一部分,有必異常的引發(fā)與捕獲已成為函數(shù)之間界面的一部分,有必要在函數(shù)原型中也列出異常引發(fā)。要在函數(shù)原型中也列出異常引發(fā)。例如:例如:void fun(int i) throw(t1,t2,t3);3、帶有異常聲明的函數(shù)原型、帶有異常聲明的函數(shù)原型C+的異常處理機(jī)制不僅能夠處理各種不同類型的異常,的異常處理機(jī)制不僅能夠處理各種不同類型的異常,還具有為拋出異常前構(gòu)造所有局部對象自動調(diào)用析構(gòu)函數(shù)還具有為拋出異常前構(gòu)造所有局部對象自動調(diào)用析構(gòu)函數(shù)的
17、能力。的能力。在程序中,找到一個匹配的在程序中,找到一個匹配的catch異常處理后,如果異常處理后,如果catch子句的異常類型說明是一個值參數(shù),則其初始化方式是復(fù)子句的異常類型說明是一個值參數(shù),則其初始化方式是復(fù)制被拋出的異常對象。如果制被拋出的異常對象。如果catch子句的異常類型說明是子句的異常類型說明是一個引用,則其初始化方式是使該引用指向異常對象。一個引用,則其初始化方式是使該引用指向異常對象。當(dāng)當(dāng)catch子句的異常類型說明參數(shù)被初始化后,便于始展子句的異常類型說明參數(shù)被初始化后,便于始展開棧的過程。這包括將從對應(yīng)的開棧的過程。這包括將從對應(yīng)的try塊開始到異常被拋出之塊開始到異常
18、被拋出之間構(gòu)造且尚未析構(gòu)的所有自動對象進(jìn)行析構(gòu)。析構(gòu)的間構(gòu)造且尚未析構(gòu)的所有自動對象進(jìn)行析構(gòu)。析構(gòu)的次序與構(gòu)造的次序相反。然后程序從最后一個次序與構(gòu)造的次序相反。然后程序從最后一個catch處理處理之后開始恢復(fù)執(zhí)行。之后開始恢復(fù)執(zhí)行。異常處理中對象的構(gòu)造與析構(gòu)異常處理中對象的構(gòu)造與析構(gòu)例如:例如:#include void fun(void);class Apublic:A() ;A() ;const char *ShowReason() const /異常處理成員函數(shù)異常處理成員函數(shù)return 異常在異常在A類中類中;class Bpublic:B();B();B:B()coutB構(gòu)造函數(shù)
19、構(gòu)造函數(shù)endl;B:B()coutB析構(gòu)函數(shù)析構(gòu)函數(shù)endl; void fun()B b;coutfun():拋擲一個拋擲一個A異常異常endl;throw A();void main()cout進(jìn)入進(jìn)入main()endl;trycout在在try塊中調(diào)用塊中調(diào)用fun()endl;fun();catch( A E)cout在在catch處理器捕獲一個異常類型:處理器捕獲一個異常類型:;coutE.ShowReason()endl;catch(char *str)cout捕獲其他異常:捕獲其他異常:strendl;cout返回返回main()endl;在名字空間中可以放入這樣的聲明:類、
20、變量以及它在名字空間中可以放入這樣的聲明:類、變量以及它們的初始化)、函數(shù)以及它們的定義)、模板以及其們的初始化)、函數(shù)以及它們的定義)、模板以及其他名字空間。從而這些變量或函數(shù)都與該名字空間相關(guān)他名字空間。從而這些變量或函數(shù)都與該名字空間相關(guān)聯(lián)。聯(lián)。名字空間概述名字空間概述1、名字空間的定義、名字空間的定義保留字保留字namespace用于定義名字空間。名字空間必用于定義名字空間。名字空間必須在程序的全局作用域內(nèi)定義,不能在函數(shù)內(nèi)或類內(nèi)部須在程序的全局作用域內(nèi)定義,不能在函數(shù)內(nèi)或類內(nèi)部定義,最外層名字空間的名字必須在程序的全局作用域定義,最外層名字空間的名字必須在程序的全局作用域惟一。惟一。
21、名字空間可以分多次定義,即可以先在初始定義中定義名字空間可以分多次定義,即可以先在初始定義中定義一部分成員,然后在擴(kuò)展定義中再定義另一部分成員,一部分成員,然后在擴(kuò)展定義中再定義另一部分成員,或者再定義初始時聲明函數(shù)原型。初始定義和擴(kuò)展定義或者再定義初始時聲明函數(shù)原型。初始定義和擴(kuò)展定義的語法格式相同。的語法格式相同。保留字保留字using用于聲明程序要引入的名字空間成員,或用于聲明程序要引入的名字空間成員,或都用于指示程序要引用的名字空間。在聲明引用名字空都用于指示程序要引用的名字空間。在聲明引用名字空間的某個成員之前,成員必須已經(jīng)在名字空間中進(jìn)行了間的某個成員之前,成員必須已經(jīng)在名字空間中
22、進(jìn)行了聲明或進(jìn)行了定義。聲明或進(jìn)行了定義。例如例如#include namespace NS1 /初始定義名字空間初始定義名字空間NS1extern int x; /說明整型變量說明整型變量xvoid fun(int); /說明函數(shù)說明函數(shù)fun(int)void fun(long) /定義函數(shù)定義函數(shù)fun(long)coutProcessing a long argument endl;namespace NS1 /擴(kuò)展定義名字空間擴(kuò)展定義名字空間NS1int x=5; /定義整形變量定義整形變量xvoid fun(int) /定義函數(shù)定義函數(shù)fun(int)coutProcessing
23、a int argumentendl;void main()int y=20;using NS1:x; /說明引用變量說明引用變量xusing:NS1:fun; /說明引用函數(shù)說明引用函數(shù)fun()x=10;fun(4);fun(4L);coutx=xendl;couty=yendl;1、訪問名字空間的成員、訪問名字空間的成員訪問名字空間的成員有訪問名字空間的成員有4種方式:種方式:(1直接訪問成員直接訪問成員格式如下:格式如下:名字空間名字名字空間名字:成員名字成員名字因而,直接訪問總能惟一地訪問指定名字空間的成員。因而,直接訪問總能惟一地訪問指定名字空間的成員。(2指定名字空間使用指定名字
24、空間使用using namespace 語句)語句)指定名字空間的格式如下:指定名字空間的格式如下:using namespace 名字空間;名字空間;/直接使用成員名字直接使用成員名字(3聲明引用成員使用聲明引用成員使用using語句)語句)聲明引用成員的格式如下:聲明引用成員的格式如下:using 名字空間名字空間:名字名字/直接使用成員名字直接使用成員名字(4使用別名法使用別名法聲明引用成員的格式如下:聲明引用成員的格式如下:namespace 別名別名=名字空間;名字空間;/使用使用“別名別名:成員名字成員名字”本方法與直接方法成員方法類似,只是加了一個別名。例如有以下兩本方法與直接方
25、法成員方法類似,只是加了一個別名。例如有以下兩個名字空間個名字空間NSA和和NSB,分別聲明了同名的類模板:,分別聲明了同名的類模板:namespace NSA template class Array private: T *ia; int ssize; ;以上的類以上的類Array被封裝在名字空間被封裝在名字空間NSA中,在使該類前,中,在使該類前,必須使必須使NSA名字空間可見。名字空間可見。namespace NSB template class Array private: T *ia; int ssize; ;以上的類以上的類Array被封裝在名字空間被封裝在名字空間NSB中,在使
26、該類前,必須使中,在使該類前,必須使NSB名字空間可見。因?yàn)槭褂昧嗣挚臻g,兩個名字空間可見。因?yàn)槭褂昧嗣挚臻g,兩個Array類分別在不同的名類分別在不同的名字空間中,所以不會存在沖突。其中四種使用方式如下:字空間中,所以不會存在沖突。其中四種使用方式如下:第一種用法:直接用法。第一種用法:直接用法。NSA:Array a;NSB:Array b;第二種用法:指定名字空間。第二種用法:指定名字空間。using namespace NSA;Array a;using namespace NSB;Array b;第三種用法:聲明引用成員。第三種用法:聲明引用成員。using NSA:Array;
27、Array a;using NSB:Array; /錯誤,存在同名的成員錯誤,存在同名的成員Array b;值得注意的是,上述語句是錯誤的,應(yīng)將兩個類模板改為不同的名字值得注意的是,上述語句是錯誤的,應(yīng)將兩個類模板改為不同的名字,如將,如將NSB中的中的Array改為改為Array1,則以下語句是正確的:則以下語句是正確的:using NSA:Array;Array a;using NSB:Array1;Array b;第四種用法:使用別名法。第四種用法:使用別名法。namespace us=NSA;namespace ms=NSB;us:Array a;ms:Array b;例如:例如:#i
28、nclude namespace NS1int x=10; namespace NS2int x=20; void main()using NS1:x;coutx=xendl;using NS2:x;coutx=xendl;2、使用作用域運(yùn)算符、使用作用域運(yùn)算符“:”訪問成員訪問成員當(dāng)名字空間的成員和程序的全局標(biāo)識符同名時,可以通當(dāng)名字空間的成員和程序的全局標(biāo)識符同名時,可以通過作用域運(yùn)算符過作用域運(yùn)算符“:”既定程序的全局標(biāo)識符;當(dāng)名字空既定程序的全局標(biāo)識符;當(dāng)名字空間的成員和程序的標(biāo)識符同名時,首先訪問的是程序的間的成員和程序的標(biāo)識符同名時,首先訪問的是程序的局部標(biāo)識符。局部標(biāo)識符。例如:
29、例如:#include int x=20; /全局變量全局變量namespace NS1int x=10;void main()using namespace NS1;coutx=:xendl;3、名字空間的嵌套、名字空間的嵌套名字空間也可以像類那樣嵌套,形成多個層次的作用域名字空間也可以像類那樣嵌套,形成多個層次的作用域,因而,在訪問名字空間的成員時,就有可能使用多個,因而,在訪問名字空間的成員時,就有可能使用多個域運(yùn)算符。域運(yùn)算符。例如:例如:#include namespace NS1 /NS1的初始定義的初始定義int x=10;void fun1()coutNS1s fun1()en
30、dl;namespace NS2int y=20;void fun2()coutNS2s fun2()endl;using NS1:fun1; /using說明,全局名字空間限定說明,全局名字空間限定fun1using NS1:x; /using說明,全局名字空間限定說明,全局名字空間限定xusing NS1:NS2:fun2; /using說明,多重名字空間限定說明,多重名字空間限定fun2using NS1:NS2:y; /using說明,多重名字空間限定說明,多重名字空間限定yvoid main()fun1();fun2();coutx=xendl;couty=yendl;4、 std名字空間名字空間本章前面的程序都是使用標(biāo)準(zhǔn)本章前面的程序都是使用標(biāo)準(zhǔn)C+編寫的,其頭文件都編寫的,其頭文件都帶有帶有.h擴(kuò)展名,而擴(kuò)展名,而ANSI/ISO標(biāo)準(zhǔn)標(biāo)準(zhǔn)C+頭文件不帶擴(kuò)展頭文件不帶擴(kuò)展名。這是因?yàn)槊?。這是因?yàn)镃+是從是從C發(fā)展而來,某些頭文件,如發(fā)展而來,某些頭文件,如math.h都是從都是從C中沿襲過來的,而諸如中沿襲過來的,而諸如iostream.h、iostreamip.h和和fstream.h等是特別為等是特別為C+設(shè)計的。當(dāng)設(shè)計的。當(dāng)一個頭文件被包含進(jìn)某一個程序中,頭文件中的全局標(biāo)一個頭文件被包含進(jìn)某
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)連帶擔(dān)保借款合同模板
- 道路拓寬及改造工程合同
- 辦公用房租賃合同英文范本
- 廚師服務(wù)合同樣本
- 夫妻共同購房合同條款
- 女方凈身出戶離婚法律合同模板
- 跨境融資合同(一)
- 職業(yè)技術(shù)學(xué)院大學(xué)生創(chuàng)新創(chuàng)業(yè)項(xiàng)目合同
- 新能源汽車電機(jī)技術(shù)演進(jìn)與產(chǎn)業(yè)鏈創(chuàng)新考核試卷
- 文化產(chǎn)業(yè)與體育賽事結(jié)合考核試卷
- 《跟單信用證統(tǒng)一慣例》UCP600中英文對照版
- 《醫(yī)院應(yīng)急培訓(xùn)》課件
- 提高教育教學(xué)質(zhì)量深化教學(xué)改革措施
- 招標(biāo)代理機(jī)構(gòu)遴選投標(biāo)方案(技術(shù)標(biāo))
- 證件使用協(xié)議書(2篇)
- KTV商務(wù)禮儀培訓(xùn)
- 三級安全教育試題(公司級、部門級、班組級)
- 2024年《論教育》全文課件
- 貧血醫(yī)學(xué)教學(xué)課件
- 計算機(jī)網(wǎng)絡(luò)與信息安全(2024年版)課件 李全龍 第1-4章計算機(jī)網(wǎng)絡(luò)與信息安全概述-網(wǎng)絡(luò)層服務(wù)與協(xié)議
- 肺栓塞患者護(hù)理查房課件
評論
0/150
提交評論