C程序設(shè)計(jì)運(yùn)算符重載資料課件_第1頁(yè)
C程序設(shè)計(jì)運(yùn)算符重載資料課件_第2頁(yè)
C程序設(shè)計(jì)運(yùn)算符重載資料課件_第3頁(yè)
C程序設(shè)計(jì)運(yùn)算符重載資料課件_第4頁(yè)
C程序設(shè)計(jì)運(yùn)算符重載資料課件_第5頁(yè)
已閱讀5頁(yè),還剩97頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

C程序設(shè)計(jì)運(yùn)算符重載資料C程序設(shè)計(jì)運(yùn)算符重載資料C程序設(shè)計(jì)運(yùn)算符重載資料4.1運(yùn)算符重載的概念1C程序設(shè)計(jì)運(yùn)算符重載資料C程序設(shè)計(jì)運(yùn)算符重載資料C程序設(shè)計(jì)運(yùn)4.1運(yùn)算符重載的概念24.1運(yùn)算符重載的概念2運(yùn)算符重載的概念語(yǔ)言允許重新定義已有的運(yùn)算符,使其完成一些只在該特定類中使用的特定操作,這就是運(yùn)算符重載如用加法“+”運(yùn)算符進(jìn)行兩個(gè)復(fù)數(shù)的相加。若有z1=2+3i,z2=4-8i,在數(shù)學(xué)中,可直接用“+”實(shí)現(xiàn)z31+z2,也就是將z1和z2的實(shí)部和虛部分別相加,z3=2+4+(3-8)6-5i。這時(shí)必須實(shí)現(xiàn)復(fù)數(shù)相加。比如用戶可以通過定義一個(gè)函數(shù)來實(shí)現(xiàn)復(fù)數(shù)相加3運(yùn)算符重載的概念語(yǔ)言允許重新定義已有的運(yùn)算符,使其完成一些只例4.1通過函數(shù)實(shí)現(xiàn)復(fù)數(shù)相加示例。聲明復(fù)數(shù)數(shù)

{:數(shù)據(jù)成員 ; 實(shí)部 ; 虛部:公有函數(shù) (r=0,i=0):(r),(i){}構(gòu)造函數(shù) (); 輸出復(fù)數(shù) (1,2); 復(fù)數(shù)加法};() 輸出復(fù)數(shù){ (<0)<<<<<<"i"<<; 虛部為負(fù) (0)<<<<; 虛部為0 <<<<“+”<<<<“i”<<; 虛部為負(fù)}……4例4.1通過函數(shù)實(shí)現(xiàn)復(fù)數(shù)相加示例。4例4.1通過函數(shù)實(shí)現(xiàn)復(fù)數(shù)相加示例。……(12){ z(z1+z2,z1+z2)定義復(fù)數(shù)對(duì)象 z; 返回復(fù)數(shù)}() 主函數(shù)(){ z1(2,3),z2(6,-5),z3; 定義復(fù)數(shù)對(duì)象 z1(); 輸出z1 z2(); 輸出z2 z3=(z1,z2); z312 z3(); 輸出z3 (""); 輸出系統(tǒng)提示信息 0; 返回值0,返回操作系統(tǒng)}程序運(yùn)行時(shí)屏幕輸出如下:2+3i6-5i8-2i請(qǐng)按任意鍵繼續(xù)...在()函數(shù)體中的兩行代碼可以用“(z1+z2,z1+z2);”代替,“(z1+z2,z1+z2)”的含義是建立一個(gè)臨時(shí)復(fù)數(shù)對(duì)象,它的實(shí)部為z1+z2,虛部為z1+z2,在建立臨時(shí)對(duì)象的過程中調(diào)用了構(gòu)造函數(shù),語(yǔ)句將此臨時(shí)對(duì)象作為函數(shù)的返回值。5例4.1通過函數(shù)實(shí)現(xiàn)復(fù)數(shù)相加示例。程序運(yùn)行時(shí)屏幕輸出如下:運(yùn)算符重載能否像實(shí)數(shù)的加法運(yùn)算一樣,直接用加號(hào)“+”來實(shí)現(xiàn)復(fù)數(shù)運(yùn)算呢?例如在程序中直接用“z312”進(jìn)行運(yùn)算,這需要對(duì)運(yùn)算符“+”進(jìn)行重載。運(yùn)算符重載的方法在實(shí)質(zhì)上就是定義一個(gè)重載運(yùn)算符的函數(shù),在執(zhí)行被重載的運(yùn)算符時(shí),系統(tǒng)將調(diào)用此函數(shù)實(shí)現(xiàn)相應(yīng)的運(yùn)算。運(yùn)算符重載本質(zhì)就是函數(shù)的重載。重載運(yùn)算符的函數(shù)的原型如下:返回值類型運(yùn)算符(形參表);例如將“+”用于類的加法運(yùn)算運(yùn)算符重載的函數(shù)原型可以為:(1,2);6運(yùn)算符重載能否像實(shí)數(shù)的加法運(yùn)算一樣,直接用加號(hào)“+”來實(shí)現(xiàn)復(fù)例4.2通過運(yùn)算符重載實(shí)現(xiàn)復(fù)數(shù)相加的示例。<> 編譯預(yù)處理命令; 使用命名空間聲明復(fù)數(shù)數(shù)

{:數(shù)據(jù)成員 ; 實(shí)部 ; 虛部:公有函數(shù) (r=0,i=0):(r),(i){}構(gòu)造函數(shù) (); 輸出復(fù)數(shù) (12) {(z1+z2,z1+z2);}};() 輸出復(fù)數(shù){ (<0)<<<<<<"i"<<; 虛部為負(fù) (0)<<<<; 虛部為0 <<<<"+"<<<<"i"<<; 虛部為負(fù)}……上面的程序在2005,2005,和都能正常運(yùn)行,但在6.0下會(huì)出現(xiàn)的編譯時(shí)錯(cuò)語(yǔ),是6.0的一個(gè),在6.0中可將:<> 編譯預(yù)處理命令; 使用命名空間改為:<> 編譯預(yù)處理命令<> 包含()的聲明7例4.2通過運(yùn)算符重載實(shí)現(xiàn)復(fù)數(shù)相加的示例。上面的程序在例4.2通過運(yùn)算符重載實(shí)現(xiàn)復(fù)數(shù)相加的示例?!?a,b){a+b;} 錯(cuò),重載運(yùn)算符的函數(shù)的參數(shù)不能全部是的標(biāo)準(zhǔn)類型() 主函數(shù)(){ z1(2,3),z2(6,-5),z3; 定義復(fù)數(shù)對(duì)象 z1(); 輸出z1 z2(); 輸出z2 z3=z1+z2; 進(jìn)行復(fù)數(shù)加法運(yùn)算 z3(); 輸出z3 (""); 輸出系統(tǒng)提示信息 0; 返回值0,返回操作系統(tǒng)}程序運(yùn)行時(shí)屏幕輸出如下:2+3i6-5i8-2i請(qǐng)按任意鍵繼續(xù)...8例4.2通過運(yùn)算符重載實(shí)現(xiàn)復(fù)數(shù)相加的示例。程序運(yùn)行時(shí)屏幕輸4.2運(yùn)算符重載方式94.2運(yùn)算符重載方式9運(yùn)算符重載方式的運(yùn)算符按參加運(yùn)算的操作數(shù)個(gè)數(shù)可分為單目運(yùn)算符、雙目運(yùn)算符、三目運(yùn)算符以及不確定目數(shù)運(yùn)算符單目運(yùn)算符只有一個(gè)操作數(shù),例如(取反運(yùn)算符),(負(fù)號(hào)運(yùn)算符)等雙目運(yùn)算符有兩個(gè)操作數(shù)參與運(yùn)算,例如2+3(加法運(yùn)算符),(賦值運(yùn)運(yùn)算符)等三目運(yùn)算符有三個(gè)操作數(shù)參與運(yùn)算,三目運(yùn)算符只包括問號(hào)運(yùn)算符,行例如不確定目數(shù)運(yùn)算符是操作數(shù)個(gè)數(shù)不確定,可根據(jù)需要重載為不同的操作數(shù)個(gè)數(shù),不確定目數(shù)運(yùn)算符只包括函數(shù)調(diào)用運(yùn)算符“()”在中只能重載單目運(yùn)算符、雙目運(yùn)算符及不確定目數(shù)運(yùn)算符“()”10運(yùn)算符重載方式的運(yùn)算符按參加運(yùn)算的操作數(shù)個(gè)數(shù)可分為單目運(yùn)算4.2.1運(yùn)算符重載為類的成員函數(shù)通過該類的對(duì)象來調(diào)用運(yùn)算符函數(shù),由于對(duì)象本身將作為一個(gè)操作數(shù),因此要求第一個(gè)操作數(shù)的類型為用戶自定義類,參數(shù)表中的參數(shù)個(gè)數(shù)比操作數(shù)個(gè)數(shù)少一。下面是運(yùn)算符重載為類的成員函數(shù)的一般形式:類名{:數(shù)據(jù)成員 ……:公有函數(shù) 返回值類型運(yùn)算符(形參表)運(yùn)算符重載為類的成員函數(shù) ……}; 其中“運(yùn)算符”是運(yùn)算符函數(shù)的專用函數(shù)名。114.2.1運(yùn)算符重載為類的成員函數(shù)通過該類的對(duì)象來調(diào)用運(yùn)算用類的成員函數(shù)重載單目運(yùn)算符單目運(yùn)算符的運(yùn)算符在一般情況下重載為類的成員函數(shù)時(shí),形參表為空,以當(dāng)前對(duì)象(即調(diào)用該運(yùn)算符函數(shù)的對(duì)象)作為運(yùn)算符唯一的操作數(shù)。

12用類的成員函數(shù)重載單目運(yùn)算符單目運(yùn)算符的運(yùn)算符在一般情況下重例4.3單目運(yùn)算符重載為類的成員函數(shù)示例。聲明整型類

{:數(shù)據(jù)成員 ; 數(shù)據(jù)值:公有函數(shù) (n=0):(n){} 構(gòu)造函數(shù) (n){=n;} 設(shè)置數(shù)據(jù)值 (){;} 返回?cái)?shù)據(jù)值 (){();} 重載負(fù)號(hào)運(yùn)算符“-”};() 主函數(shù)(){ i; 定義整型對(duì)象 (6); 設(shè)置數(shù)據(jù)值 <<()<<; 輸出數(shù)據(jù)值6 i=; 對(duì)i進(jìn)行求負(fù)號(hào)運(yùn)算,等價(jià)于(); <<()<<; 輸出數(shù)據(jù)值-6 (""); 輸出系統(tǒng)提示信息 0; 返回值0,返回操作系統(tǒng)}13例4.3單目運(yùn)算符重載為類的成員函數(shù)示例。13用類的成員函數(shù)重載雙目運(yùn)算符雙目運(yùn)算符重載為類的成員函數(shù)時(shí),形參表中有一個(gè)參數(shù),以當(dāng)前對(duì)象作為運(yùn)算符的左操作數(shù),參數(shù)作為右操作數(shù)。14用類的成員函數(shù)重載雙目運(yùn)算符雙目運(yùn)算符重載為類的成員函數(shù)時(shí),例4.4雙目運(yùn)算符重載為類的成員函數(shù)示例。聲明整型類

{:數(shù)據(jù)成員 ; 數(shù)據(jù)值:公有函數(shù) (n=0):(n){} 構(gòu)造函數(shù) (n){=n;} 設(shè)置數(shù)據(jù)值 (){;} 返回?cái)?shù)據(jù)值 ()重載加法運(yùn)算符“+” {(>+);} };() 主函數(shù)(){ i(6),j(9),k; 定義整型對(duì)象 k=i+j; 對(duì)整型對(duì)象求加法運(yùn)算,等價(jià)于(j); <<()<<"+"<<()<<"="<<()<<輸出數(shù)值 (""); 輸出系統(tǒng)提示信息 0; 返回值0,返回操作系統(tǒng)}程序運(yùn)行時(shí)屏幕輸出如下:6+9=15請(qǐng)按任意鍵繼續(xù)...15例4.4雙目運(yùn)算符重載為類的成員函數(shù)示例。程序運(yùn)行時(shí)屏幕輸4.2.2運(yùn)算符重載為類的友元函數(shù)可以像將運(yùn)算符重載為類的友元函數(shù),這時(shí)參數(shù)表中的參數(shù)個(gè)數(shù)與操作數(shù)個(gè)相等,并且操作數(shù)的第一個(gè)操作數(shù)的類型不要求是用戶自定義類。下面是運(yùn)算符重載為類的友元函數(shù)的一般形式:類名{:數(shù)據(jù)成員 ……:公有函數(shù) 返回值類型運(yùn)算符(形參表)運(yùn)算符重載為類的友元函數(shù) ……}; 由于是友元函數(shù),因此在函數(shù)原型前應(yīng)加上關(guān)鍵字。164.2.2運(yùn)算符重載為類的友元函數(shù)可以像將運(yùn)算符重載為類的用類的友元函數(shù)重載單目運(yùn)算符將單目運(yùn)算符重載為類的友元函數(shù)時(shí),友元函數(shù)形參表中有一個(gè)參數(shù)作為該運(yùn)算符的操作數(shù)。17用類的友元函數(shù)重載單目運(yùn)算符將單目運(yùn)算符重載為類的友元函數(shù)時(shí)例4.5單目運(yùn)算符重載為類的友元函數(shù)示例。<> 編譯預(yù)處理命令; 使用命名空間聲明整型類

{:數(shù)據(jù)成員 ; 數(shù)據(jù)值:公有函數(shù) (n=0):(n){} 構(gòu)造函數(shù) (n){=n;} 設(shè)置數(shù)據(jù)值 (){;} 返回?cái)?shù)據(jù)值 ()重載負(fù)號(hào)運(yùn)算符"-" {();}; };……在6.0下會(huì)出現(xiàn)的編譯時(shí)錯(cuò)語(yǔ),是6.0的一個(gè),在6.0中可將:<> 編譯預(yù)處理命令; 使用命名空間改為:<> 編譯預(yù)處理命令<> 包含()的聲明18例4.5單目運(yùn)算符重載為類的友元函數(shù)示例。在6.0下會(huì)例4.5單目運(yùn)算符重載為類的友元函數(shù)示例?!?) 主函數(shù)(){ i; 定義整型對(duì)象 (6); 設(shè)置數(shù)據(jù)值 <<()<<; 輸出數(shù)據(jù)值 i=; 對(duì)i進(jìn)行求負(fù)號(hào)運(yùn)算,等價(jià)于(i); <<()<<; 輸出數(shù)據(jù)值 (""); 輸出系統(tǒng)提示信息 0; 返回值0,返回操作系統(tǒng)}程序運(yùn)行時(shí)屏幕輸出如下:6-6請(qǐng)按任意鍵繼續(xù)...19例4.5單目運(yùn)算符重載為類的友元函數(shù)示例。程序運(yùn)行時(shí)屏幕輸用類的友元函數(shù)重載雙目運(yùn)算符將雙目運(yùn)算符重載為類的友元函數(shù)時(shí),友元函數(shù)形參表中包含有兩個(gè)參數(shù),這兩個(gè)參數(shù)分別作為運(yùn)算符的左、右操作數(shù)。20用類的友元函數(shù)重載雙目運(yùn)算符將雙目運(yùn)算符重載為類的友元函數(shù)時(shí)例4.6雙目運(yùn)算符重載為類的友元函數(shù)示例。<> 編譯預(yù)處理命令; 使用命名空間聲明整型類

{:數(shù)據(jù)成員 ; 數(shù)據(jù)值:公有函數(shù) (n=0):(n){} 構(gòu)造函數(shù) (n){=n;} 設(shè)置數(shù)據(jù)值 (){;} 返回?cái)?shù)據(jù)值 (,) {(+);}重載"+",兩個(gè)操作數(shù)都是對(duì)象 (a,) {(a+);} 重載"+",第一操作數(shù)是標(biāo)準(zhǔn)類型 (&a,b) {(+b);} 重載"+",第二操作數(shù)是標(biāo)準(zhǔn)類型};……在6.0下會(huì)出現(xiàn)的編譯時(shí)錯(cuò)語(yǔ),是6.0的一個(gè),在6.0中可將:<> 編譯預(yù)處理命令; 使用命名空間改為:<> 編譯預(yù)處理命令<> 包含()的聲明21例4.6雙目運(yùn)算符重載為類的友元函數(shù)示例。在6.0下會(huì)例4.6雙目運(yùn)算符重載為類的友元函數(shù)示例?!?) 主函數(shù)(){ i(6),j(9),k; 定義整型對(duì)象 k=i+j; 等價(jià)于(),兩個(gè)操作數(shù)都是對(duì)象 <<()<<"+"<<()<<"="<<()<<; k=1+j; 1等價(jià)于(1),第一操作數(shù)是標(biāo)準(zhǔn)類型 <<1<<"+"<<()<<"="<<()<<輸出數(shù)值 k=i+2; 2等價(jià)于(i,2),第二操作數(shù)是標(biāo)準(zhǔn)類型 <<()<<"+"<<2<<"="<<()<<輸出數(shù)值 (""); 輸出系統(tǒng)提示信息 0; 返回值0,返回操作系統(tǒng)}程序運(yùn)行時(shí)屏幕輸出如下:6+9=151+9=106+2=8請(qǐng)按任意鍵繼續(xù)...22例4.6雙目運(yùn)算符重載為類的友元函數(shù)示例。程序運(yùn)行時(shí)屏幕輸4.2.3運(yùn)算符重載為普通函數(shù)可以將運(yùn)算符重載為普通函數(shù),這時(shí)參數(shù)表中的參數(shù)個(gè)數(shù)與操作數(shù)個(gè)相等,并且第一個(gè)操作數(shù)的類型不要求是用戶自定義類。下面是運(yùn)算符重載為普通函數(shù)的一般形式:返回值類型運(yùn)算符(形參表);由于是普通函數(shù),因此在函數(shù)原型前不應(yīng)加上關(guān)鍵字。234.2.3運(yùn)算符重載為普通函數(shù)可以將運(yùn)算符重載為普通函數(shù),用普通函數(shù)重載單目運(yùn)算符將單目運(yùn)算符重載為普通函數(shù)時(shí),函數(shù)形參表中有一個(gè)參數(shù)作為該運(yùn)算符的操作數(shù)。24用普通函數(shù)重載單目運(yùn)算符將單目運(yùn)算符重載為普通函數(shù)時(shí),函數(shù)形例4.7單目運(yùn)算符重載為類的普通函數(shù)示例。聲明整型類

{:數(shù)據(jù)成員 ; 數(shù)據(jù)值:公有函數(shù) (n=0):(n){} 構(gòu)造函數(shù) (n){=n;} 設(shè)置數(shù)據(jù)值 (){;} 返回?cái)?shù)據(jù)值};() 重載負(fù)號(hào)運(yùn)算符"-"{(());}; () 主函數(shù)(){ i; 定義整型對(duì)象 (6); 設(shè)置數(shù)據(jù)值 <<()<<; 輸出數(shù)據(jù)值6 i=; 對(duì)i進(jìn)行求負(fù)號(hào)運(yùn)算,等價(jià)于(i); <<()<<; 輸出數(shù)據(jù)值-6 (""); 輸出系統(tǒng)提示信息 0; 返回值0,返回操作系統(tǒng)}25例4.7單目運(yùn)算符重載為類的普通函數(shù)示例。25用普通函數(shù)重載重載雙目運(yùn)算符將雙目運(yùn)算符重載為普通函數(shù)時(shí),函數(shù)形參表中包含有兩個(gè)參數(shù),這兩個(gè)參數(shù)分別作為運(yùn)算符的左、右操作數(shù)。26用普通函數(shù)重載重載雙目運(yùn)算符將雙目運(yùn)算符重載為普通函數(shù)時(shí),函例4.8雙目運(yùn)算符重載為普通函數(shù)示例。聲明整型類

{:數(shù)據(jù)成員 ; 數(shù)據(jù)值:公有函數(shù) (n=0):(n){} 構(gòu)造函數(shù) (n){=n;} 設(shè)置數(shù)據(jù)值 (){;} 返回?cái)?shù)據(jù)值};(,)重載運(yùn)算符"+"{(()+());} () 主函數(shù)(){ i(6),j(9),k; 定義整型對(duì)象 k=i+j; 對(duì)整型對(duì)象求加法運(yùn)算,等價(jià)于() <<()<<"+"<<()<<"="<<()<<; (""); 輸出系統(tǒng)提示信息 0; 返回值0,返回操作系統(tǒng)}程序運(yùn)行時(shí)屏幕輸出如下:6+9=15請(qǐng)按任意鍵繼續(xù)...27例4.8雙目運(yùn)算符重載為普通函數(shù)示例。程序運(yùn)行時(shí)屏幕輸出如運(yùn)算符重載一般地講,單目運(yùn)算符最好重載為類的成員函數(shù),雙目運(yùn)算符最好重載為類的友元函數(shù)或普通函數(shù)。28運(yùn)算符重載一般地講,單目運(yùn)算符最好重載為類的成員函數(shù),雙目運(yùn)*4.3典型運(yùn)算符重載29*4.3典型運(yùn)算符重載29*4.3.1重載賦值運(yùn)算符“=”由于賦值運(yùn)算符重載后實(shí)現(xiàn)將一個(gè)表達(dá)式的值賦值給用戶自定義對(duì)象,也就是賦值運(yùn)算符的第一個(gè)操作數(shù)是類型為用戶自定義類的對(duì)象,因此規(guī)定賦值運(yùn)算符“=”只能重載為類的成員函數(shù),一般重載格式為:類名類名(類名&源對(duì)象){ (&源對(duì)象) { 目的對(duì)象與源對(duì)象不是同一個(gè)對(duì)象 …… 復(fù)制被被賦值對(duì)象 } *; 返回目的對(duì)象}30*4.3.1重載賦值運(yùn)算符“=”由于賦值運(yùn)算符重載后實(shí)現(xiàn)*重載賦值運(yùn)算符“=”如用戶沒有為一個(gè)類重載賦值運(yùn)算符,編譯程序?qū)⑸梢粋€(gè)默認(rèn)賦值運(yùn)算符函數(shù)。賦值運(yùn)算把源對(duì)象的數(shù)據(jù)成員逐個(gè)地復(fù)制到目的對(duì)象的相應(yīng)數(shù)據(jù)成員對(duì)于一般的類,使用默認(rèn)賦值運(yùn)算符函數(shù)都能正常地工作,但當(dāng)一個(gè)類中包含有指針類型的數(shù)據(jù)成員,并且通過指針在構(gòu)造函數(shù)中動(dòng)態(tài)申請(qǐng)了存儲(chǔ)空間,在析構(gòu)函數(shù)中通過指針釋放了動(dòng)態(tài)存儲(chǔ)空間,這種情況可能會(huì)出現(xiàn)運(yùn)行時(shí)錯(cuò)誤31*重載賦值運(yùn)算符“=”如用戶沒有為一個(gè)類重載賦值運(yùn)算符,編例4.9使用賦值運(yùn)算符出現(xiàn)運(yùn)行時(shí)錯(cuò)誤的示例。

{:數(shù)據(jù)成員 *; 串值:公有成員 (*s="") 構(gòu)造函數(shù) { (s)s=""; 將空指針轉(zhuǎn)化為空串 =[(s)+1]; 分配存儲(chǔ)空間 (,s); 復(fù)制串值 } () 復(fù)制構(gòu)造函數(shù) { =[()+1]分配空間 (,); 復(fù)制串值 } (){[];} 析構(gòu)函數(shù) (){<<<<;} 顯示串};……32例4.9使用賦值運(yùn)算符出現(xiàn)運(yùn)行時(shí)錯(cuò)誤的示例。32例4.9使用賦值運(yùn)算符出現(xiàn)運(yùn)行時(shí)錯(cuò)誤的示例?!?) 主函數(shù)(){ s1(""),s2; 定義對(duì)象 s2=s1; 使用默認(rèn)賦值運(yùn)算符函數(shù) s1(); 顯示串s1 s2(); 顯示串s2 (""); 輸出系統(tǒng)提示信息 0; 返回值0,返回操作系統(tǒng)}程序運(yùn)行時(shí)屏幕輸出如下:請(qǐng)按任意鍵繼續(xù)...當(dāng)用戶按任一鍵時(shí),屏幕將會(huì)顯示類似!的錯(cuò)誤在和環(huán)境中沒有出上述錯(cuò)誤現(xiàn)象,原因是在發(fā)現(xiàn)釋放一個(gè)已釋放的空間時(shí),不再作釋放操作,也不作異常處理33例4.9使用賦值運(yùn)算符出現(xiàn)運(yùn)行時(shí)錯(cuò)誤的示例。程序運(yùn)行時(shí)屏幕在執(zhí)行“s1("");”語(yǔ)句時(shí),構(gòu)造函數(shù)動(dòng)態(tài)地分配存儲(chǔ)空間,并將返回的地址賦給對(duì)象s1的數(shù)據(jù)成員,然后把“”拷貝到這塊空間中執(zhí)行語(yǔ)句“s2=s1;”時(shí),由于沒有為類重載賦值運(yùn)算符,系統(tǒng)將調(diào)用默認(rèn)賦值運(yùn)算符函數(shù),負(fù)責(zé)將對(duì)象s1的數(shù)據(jù)成員中存放的地址值賦值給對(duì)象s2的數(shù)據(jù)成員對(duì)象s1復(fù)制給對(duì)象s2的僅是其數(shù)據(jù)成員的值,并沒有把指向的動(dòng)態(tài)存儲(chǔ)空間進(jìn)行復(fù)制,當(dāng)遇到對(duì)象的生命期結(jié)束需要撤銷對(duì)象時(shí),首先由s2對(duì)象調(diào)用析構(gòu)函數(shù),將成員所指向的字符串“”所在的動(dòng)態(tài)空間釋放在對(duì)象s1自動(dòng)調(diào)用析構(gòu)函數(shù)之前,對(duì)象s1的數(shù)據(jù)成員指向已釋放的內(nèi)存空間,因此在s1調(diào)用析構(gòu)函數(shù)時(shí),無(wú)法正確執(zhí)行析構(gòu)函數(shù)代碼“[]”,從而導(dǎo)致出錯(cuò)。34在執(zhí)行“s1("");”語(yǔ)句時(shí),構(gòu)造函數(shù)動(dòng)態(tài)地分配存儲(chǔ)空間重載賦值運(yùn)算符解決問題應(yīng)重載賦值運(yùn)算符,復(fù)制指針數(shù)據(jù)成員所指向的動(dòng)態(tài)空間中的內(nèi)容。這樣,兩個(gè)對(duì)象的指針成員就擁有不同的地址值,指向不同的動(dòng)態(tài)存儲(chǔ)空間35重載賦值運(yùn)算符解決問題應(yīng)重載賦值運(yùn)算符,復(fù)制指針數(shù)據(jù)成員所指例4.10重載賦值運(yùn)算符避免例4.9使用默認(rèn)賦值運(yùn)算符的副作用。

{:數(shù)據(jù)成員 *; 串值:公有成員 (*s="") 構(gòu)造函數(shù) { (s)s=""; 將空指針轉(zhuǎn)化為空串 =[(s)+1]分配存儲(chǔ)空間 (,s); 復(fù)制串值 } () 復(fù)制構(gòu)造函數(shù) { =[()+1]分配空間 (,); 復(fù)制串值 } (); 重載賦值運(yùn)算符 (){[];} 析構(gòu)函數(shù) (){<<<<;} 顯示串};……36例4.10重載賦值運(yùn)算符避免例4.9使用默認(rèn)賦值運(yùn)算符的副例4.10重載賦值運(yùn)算符避免例4.9使用默認(rèn)賦值運(yùn)算符的副作用?!?) 重載賦值運(yùn)算符{ () { 目的對(duì)象與源對(duì)象不是同一個(gè)對(duì)象 =[()+1]分配空間 (,)復(fù)制串值 } *; 返回目的對(duì)象}() 主函數(shù)(){ s1(""),s2; 定義對(duì)象 s2=s1; 使用重載賦值運(yùn)算符 s1(); 顯示串s1 s2(); 顯示串s2 (""); 輸出系統(tǒng)提示信息 0; 返回值0,返回操作系統(tǒng)}程序運(yùn)行時(shí)屏幕輸出如下:請(qǐng)按任意鍵繼續(xù)...37例4.10重載賦值運(yùn)算符避免例4.9使用默認(rèn)賦值運(yùn)算符的副4.3.2重載自增1運(yùn)算符“”和自減1運(yùn)算符“”這兩個(gè)運(yùn)算符還有前綴和后綴的差別,和是前綴使用方式,和是后綴使用方式在當(dāng)前的標(biāo)準(zhǔn)中,對(duì)此作了特殊約定,對(duì)于前綴使用方式,與一般單目運(yùn)符的重載方式相同,對(duì)于后綴使用方式,在進(jìn)行運(yùn)算符的重載函數(shù)中增加一個(gè)整型參數(shù)具體重載函數(shù)的聲明格式如下:類名(); 前綴“”重載為類的成員函數(shù)類名(); 后綴“”重載為類的成員函數(shù)類名(); 前綴“”重載為類的成員函數(shù)類名(); 后綴“”重載為類的成員函數(shù)類名(類名&); 前綴“”重載為類的友元函數(shù)類名(類名&,); 后綴“”重載為類的友元函數(shù)類名(類名&); 前綴“”重載為類的友元函數(shù)類名(類名&,); 后綴“”重載為類的友元函數(shù)類名(類名&); 前綴“”重載為普通函數(shù)類名(類名&,); 后綴“”重載為普通函數(shù)類名(類名&); 前綴“”重載為普通函數(shù)類名(類名&,); 后綴“”重載為普通函數(shù)384.3.2重載自增1運(yùn)算符“”和自減1運(yùn)算符“”這兩個(gè)運(yùn)例4.11重載自增1運(yùn)算符“”和自減1運(yùn)算符“”示例。

{:數(shù)據(jù)成員 ; 數(shù)據(jù)值:公有函數(shù) (n=0):(n){} 構(gòu)造函數(shù) (n){=n;} 設(shè)置數(shù)據(jù)值 (){;} 返回?cái)?shù)據(jù)值 (){();} 前綴“ (i){();} 后綴 () 前綴 {();} };(,i) 重載后綴為普通函數(shù){ =a; 用暫存a a=(()-1); a的值減1 ; 返回a原來的值,也就是} …… 39例4.11重載自增1運(yùn)算符“”和自減1運(yùn)算符“”示例。39例4.11重載自增1運(yùn)算符“”和自減1運(yùn)算符“”示例?!?) 主函數(shù)(){ i,j; 定義整型對(duì)象 (6); 設(shè)置數(shù)據(jù)值 j=; 對(duì)i作前綴自增1運(yùn)算等價(jià)于() <<()<<","<<()<<; 輸出數(shù)據(jù)值7,7 (6); 設(shè)置數(shù)據(jù)值 j=; 對(duì)i作后綴自增1運(yùn)算等價(jià)于(0) <<()<<","<<()<<; 輸出數(shù)據(jù)值7,6 (6); 設(shè)置數(shù)據(jù)值 j=; 對(duì)i作前綴自減1運(yùn)算等價(jià)于(i) <<()<<","<<()<<; 輸出數(shù)據(jù)值5,5 (6); 設(shè)置數(shù)據(jù)值 j=; 對(duì)i作后綴自減1運(yùn)算等價(jià)于(i,0) <<()<<","<<()<<; 輸出數(shù)據(jù)值5,6 (""); 輸出系統(tǒng)提示信息 0; 返回值0,返回操作系統(tǒng)}40例4.11重載自增1運(yùn)算符“”和自減1運(yùn)算符“”示例。40*4.3.3重載下標(biāo)運(yùn)算符“[]”下標(biāo)運(yùn)算符“[]”一般用于在數(shù)組中標(biāo)識(shí)數(shù)組元素的位置,在語(yǔ)言中,下標(biāo)運(yùn)算符“[]”是沒有越界檢查功能的。可以通過重載下標(biāo)運(yùn)算符“[]”實(shí)現(xiàn)一種更安全、功能更強(qiáng)的數(shù)組類型下標(biāo)運(yùn)算符的使用方式是a[i],第一個(gè)操作數(shù)為數(shù)組名,重載后就為用戶自定義對(duì)象,因此規(guī)定重載下標(biāo)運(yùn)算符“[]”只能重載為類的成員函數(shù)。定義下標(biāo)運(yùn)算符“[]”的函數(shù)重載的一般聲明格式如下:返回值類型[]();41*4.3.3重載下標(biāo)運(yùn)算符“[]”下標(biāo)運(yùn)算符“[]”一例4.12重載下標(biāo)運(yùn)算符“[]”示例。聲明數(shù)組類模板<>

{:數(shù)據(jù)成員 *; 存儲(chǔ)數(shù)據(jù)元素值 ; 數(shù)組元素個(gè)數(shù):公有函數(shù) ():(){=[];} 構(gòu)造函數(shù) (){;} 析構(gòu)函數(shù) [](i) 下標(biāo)運(yùn)算符"[]"重載為成員函數(shù) { (i<0i>=) { <<"元素位置錯(cuò)!"<<; (1); 退出程序的運(yùn)行,返回到操作系統(tǒng) } [i]; 返回[i] }};……42例4.12重載下標(biāo)運(yùn)算符“[]”示例。42例4.12重載下標(biāo)運(yùn)算符“[]”示例?!?) 主函數(shù)(){ a[]={1,9,7,5,6,3}; 定義數(shù)組a n=6; 數(shù)組元素個(gè)數(shù) <>(n); 定義數(shù)組對(duì)象 i; 定義臨時(shí)變量 (i=0;i<n;)[i]=a[i][i]等價(jià)于[i] (i=0;i<n;)<<[i]<<""輸出元素值 <<; 換行 (""); 輸出系統(tǒng)提示信息 0; 返回值0,返回操作系統(tǒng)}程序運(yùn)行時(shí)屏幕輸出如下:197563請(qǐng)按任意鍵繼續(xù)...43例4.12重載下標(biāo)運(yùn)算符“[]”示例。程序運(yùn)行時(shí)屏幕輸出如*4.3.4重載函數(shù)調(diào)用運(yùn)算符“()”重載函數(shù)調(diào)用運(yùn)算符“()”的用途是使類的對(duì)象可以象函數(shù)名稱一樣使用,運(yùn)算符“()”是通過用戶自定義對(duì)象來調(diào)用函數(shù),也就是用戶自定義對(duì)象是第一個(gè)操作數(shù),因此規(guī)定函數(shù)調(diào)用運(yùn)算符“()”只能重載為類的成員函數(shù),具體聲明格式如下:返回值類型()(形參表);在C中,由于上面的聲明格式中形參表的參數(shù)個(gè)數(shù)不確定,因此“()”是不確定目數(shù)運(yùn)算符44*4.3.4重載函數(shù)調(diào)用運(yùn)算符“()”重載函數(shù)調(diào)用運(yùn)算符例4.13重載下標(biāo)運(yùn)算符“[]”示例。聲明數(shù)組類模板<>

{:數(shù)據(jù)成員 *; 存儲(chǔ)數(shù)據(jù)元素值 ; 數(shù)組元素個(gè)數(shù):公有函數(shù) ():(){=[];} 構(gòu)造函數(shù) (){;} 析構(gòu)函數(shù) ()(i)函數(shù)調(diào)用運(yùn)算符只能重載為成員函數(shù) { (i<0i>=) { <<"元素位置錯(cuò)!"<<; (1); 退出程序的行運(yùn),返回到操作系統(tǒng) } [i]; 返回[i] }};……45例4.13重載下標(biāo)運(yùn)算符“[]”示例。45例4.13重載下標(biāo)運(yùn)算符“[]”示例?!?) 主函數(shù)(){ a[]={1,9,7,5,6,3}; 定義數(shù)組a n=6; 數(shù)組元素個(gè)數(shù) <>(n); 定義數(shù)組對(duì)象 i; 定義臨時(shí)變量 (i=0;i<n;)(i)=a[i](i)等價(jià)于(i) (i=0;i<n;)<<(i)<<""; 輸出元素值 <<; 換行 (""); 輸出系統(tǒng)提示信息 0; 返回值0,返回操作系統(tǒng)}本例的函數(shù)調(diào)用運(yùn)算符“()”的重載函數(shù)“()(i)”的返回值是關(guān)于類型的引用,也就是實(shí)際上返回一個(gè)變量的別名,可使函數(shù)調(diào)用運(yùn)算“()”的重載函數(shù)的調(diào)用出現(xiàn)在賦值語(yǔ)句的左邊,這樣增加了程序靈活性。程序運(yùn)行時(shí)屏幕輸出如下:197563請(qǐng)按任意鍵繼續(xù)...46例4.13重載下標(biāo)運(yùn)算符“[]”示例。本例的函數(shù)調(diào)用運(yùn)算符*4.3.5重載輸入運(yùn)算符“>>”和輸出運(yùn)算符“<<”和分別是標(biāo)準(zhǔn)輸入流和標(biāo)準(zhǔn)輸出流。只要包含頭文件“”或“”,輸入運(yùn)算符“>>”和輸出運(yùn)算符“<<”就能對(duì)標(biāo)準(zhǔn)類型數(shù)據(jù)進(jìn)行輸入和輸出。對(duì)于用戶自定義的對(duì)象,是不能直接用“<<”和“>>”來進(jìn)行輸出和輸入的。如果要用它們輸出和輸入自定義的對(duì)象,必須對(duì)它們進(jìn)行重載。輸入運(yùn)算符“>>”和輸出運(yùn)算符“<<”的重載函數(shù)的聲明一般形如下:>>(&,類名&); 重載友元函數(shù)<<(&,類名&)重載友元函數(shù)>>(&,類名&); 重載為普通函數(shù)<<(&,類名&); 重載為普通函數(shù)運(yùn)算符“>>”和“<<”的第一個(gè)參數(shù)為類型為或的引用,重載函數(shù)不能過通用戶自定義對(duì)象來進(jìn)行調(diào)用,所以只能將“>>”和“<<”的重載函數(shù)聲明為類的友元函數(shù)或普通的函數(shù)。47*4.3.5重載輸入運(yùn)算符“>>”和輸出運(yùn)算符“<<”和分例4.14重載輸入運(yùn)算符“>>”和輸出運(yùn)算符“<<”示例。聲明復(fù)數(shù)數(shù)

{:數(shù)據(jù)成員 ; 實(shí)部 ; 虛部:公有函數(shù) (r=0,i=0):(r),(i){}構(gòu)造函數(shù) (){;} 返回實(shí)部 (){;} 返回虛部 (r){=r;} 設(shè)置實(shí)部 (i){=i;} 設(shè)置虛部};……48例4.14重載輸入運(yùn)算符“>>”和輸出運(yùn)算符“<<”示例。例4.14重載輸入運(yùn)算符“>>”和輸出運(yùn)算符“<<”示例。……>>(,)重載輸入運(yùn)算符>>{ r,i; 表示實(shí)部(r)和虛部(i) <<"輸入實(shí)部:"; >>r; 輸入實(shí)部 <<"輸入虛部:"; >>i; 輸入虛部 (r); 設(shè)置實(shí)部 (i); 設(shè)置虛部 ; 返回輸入流對(duì)象}<<(,)重載運(yùn)算符<<{ (()<0) <<()<<()<<"i"; 虛部為負(fù) (()0) <<(); 虛部為0 <<()<<"+"<<()<<"i"虛部為正 ; 返回輸出流對(duì)象}……49例4.14重載輸入運(yùn)算符“>>”和輸出運(yùn)算符“<<”示例。例4.14重載輸入運(yùn)算符“>>”和輸出運(yùn)算符“<<”示例。……intmain() //主函數(shù)main(){ Complexz; //定義復(fù)數(shù)對(duì)象 cin>>z; //輸入z,cin>>z等價(jià)于operator>>(cin,z) cout<<z<<endl; //輸出z,cout<<z等價(jià)于operator<<(cout,z) system("PAUSE"); //輸出系統(tǒng)提示信息 return0; //返回值0,返回操作系統(tǒng)}程序運(yùn)行時(shí)屏幕輸出參考如下:輸入實(shí)部:6輸入虛部:86+8i請(qǐng)按任意鍵繼續(xù)...50例4.14重載輸入運(yùn)算符“>>”和輸出運(yùn)算符“<<”示例。 謝謝大家!51 謝謝大家!51C程序設(shè)計(jì)運(yùn)算符重載資料C程序設(shè)計(jì)運(yùn)算符重載資料C程序設(shè)計(jì)運(yùn)算符重載資料4.1運(yùn)算符重載的概念52C程序設(shè)計(jì)運(yùn)算符重載資料C程序設(shè)計(jì)運(yùn)算符重載資料C程序設(shè)計(jì)運(yùn)4.1運(yùn)算符重載的概念534.1運(yùn)算符重載的概念2運(yùn)算符重載的概念語(yǔ)言允許重新定義已有的運(yùn)算符,使其完成一些只在該特定類中使用的特定操作,這就是運(yùn)算符重載如用加法“+”運(yùn)算符進(jìn)行兩個(gè)復(fù)數(shù)的相加。若有z1=2+3i,z2=4-8i,在數(shù)學(xué)中,可直接用“+”實(shí)現(xiàn)z31+z2,也就是將z1和z2的實(shí)部和虛部分別相加,z3=2+4+(3-8)6-5i。這時(shí)必須實(shí)現(xiàn)復(fù)數(shù)相加。比如用戶可以通過定義一個(gè)函數(shù)來實(shí)現(xiàn)復(fù)數(shù)相加54運(yùn)算符重載的概念語(yǔ)言允許重新定義已有的運(yùn)算符,使其完成一些只例4.1通過函數(shù)實(shí)現(xiàn)復(fù)數(shù)相加示例。聲明復(fù)數(shù)數(shù)

{:數(shù)據(jù)成員 ; 實(shí)部 ; 虛部:公有函數(shù) (r=0,i=0):(r),(i){}構(gòu)造函數(shù) (); 輸出復(fù)數(shù) (1,2); 復(fù)數(shù)加法};() 輸出復(fù)數(shù){ (<0)<<<<<<"i"<<; 虛部為負(fù) (0)<<<<; 虛部為0 <<<<“+”<<<<“i”<<; 虛部為負(fù)}……55例4.1通過函數(shù)實(shí)現(xiàn)復(fù)數(shù)相加示例。4例4.1通過函數(shù)實(shí)現(xiàn)復(fù)數(shù)相加示例?!?12){ z(z1+z2,z1+z2)定義復(fù)數(shù)對(duì)象 z; 返回復(fù)數(shù)}() 主函數(shù)(){ z1(2,3),z2(6,-5),z3; 定義復(fù)數(shù)對(duì)象 z1(); 輸出z1 z2(); 輸出z2 z3=(z1,z2); z312 z3(); 輸出z3 (""); 輸出系統(tǒng)提示信息 0; 返回值0,返回操作系統(tǒng)}程序運(yùn)行時(shí)屏幕輸出如下:2+3i6-5i8-2i請(qǐng)按任意鍵繼續(xù)...在()函數(shù)體中的兩行代碼可以用“(z1+z2,z1+z2);”代替,“(z1+z2,z1+z2)”的含義是建立一個(gè)臨時(shí)復(fù)數(shù)對(duì)象,它的實(shí)部為z1+z2,虛部為z1+z2,在建立臨時(shí)對(duì)象的過程中調(diào)用了構(gòu)造函數(shù),語(yǔ)句將此臨時(shí)對(duì)象作為函數(shù)的返回值。56例4.1通過函數(shù)實(shí)現(xiàn)復(fù)數(shù)相加示例。程序運(yùn)行時(shí)屏幕輸出如下:運(yùn)算符重載能否像實(shí)數(shù)的加法運(yùn)算一樣,直接用加號(hào)“+”來實(shí)現(xiàn)復(fù)數(shù)運(yùn)算呢?例如在程序中直接用“z312”進(jìn)行運(yùn)算,這需要對(duì)運(yùn)算符“+”進(jìn)行重載。運(yùn)算符重載的方法在實(shí)質(zhì)上就是定義一個(gè)重載運(yùn)算符的函數(shù),在執(zhí)行被重載的運(yùn)算符時(shí),系統(tǒng)將調(diào)用此函數(shù)實(shí)現(xiàn)相應(yīng)的運(yùn)算。運(yùn)算符重載本質(zhì)就是函數(shù)的重載。重載運(yùn)算符的函數(shù)的原型如下:返回值類型運(yùn)算符(形參表);例如將“+”用于類的加法運(yùn)算運(yùn)算符重載的函數(shù)原型可以為:(1,2);57運(yùn)算符重載能否像實(shí)數(shù)的加法運(yùn)算一樣,直接用加號(hào)“+”來實(shí)現(xiàn)復(fù)例4.2通過運(yùn)算符重載實(shí)現(xiàn)復(fù)數(shù)相加的示例。<> 編譯預(yù)處理命令; 使用命名空間聲明復(fù)數(shù)數(shù)

{:數(shù)據(jù)成員 ; 實(shí)部 ; 虛部:公有函數(shù) (r=0,i=0):(r),(i){}構(gòu)造函數(shù) (); 輸出復(fù)數(shù) (12) {(z1+z2,z1+z2);}};() 輸出復(fù)數(shù){ (<0)<<<<<<"i"<<; 虛部為負(fù) (0)<<<<; 虛部為0 <<<<"+"<<<<"i"<<; 虛部為負(fù)}……上面的程序在2005,2005,和都能正常運(yùn)行,但在6.0下會(huì)出現(xiàn)的編譯時(shí)錯(cuò)語(yǔ),是6.0的一個(gè),在6.0中可將:<> 編譯預(yù)處理命令; 使用命名空間改為:<> 編譯預(yù)處理命令<> 包含()的聲明58例4.2通過運(yùn)算符重載實(shí)現(xiàn)復(fù)數(shù)相加的示例。上面的程序在例4.2通過運(yùn)算符重載實(shí)現(xiàn)復(fù)數(shù)相加的示例?!?a,b){a+b;} 錯(cuò),重載運(yùn)算符的函數(shù)的參數(shù)不能全部是的標(biāo)準(zhǔn)類型() 主函數(shù)(){ z1(2,3),z2(6,-5),z3; 定義復(fù)數(shù)對(duì)象 z1(); 輸出z1 z2(); 輸出z2 z3=z1+z2; 進(jìn)行復(fù)數(shù)加法運(yùn)算 z3(); 輸出z3 (""); 輸出系統(tǒng)提示信息 0; 返回值0,返回操作系統(tǒng)}程序運(yùn)行時(shí)屏幕輸出如下:2+3i6-5i8-2i請(qǐng)按任意鍵繼續(xù)...59例4.2通過運(yùn)算符重載實(shí)現(xiàn)復(fù)數(shù)相加的示例。程序運(yùn)行時(shí)屏幕輸4.2運(yùn)算符重載方式604.2運(yùn)算符重載方式9運(yùn)算符重載方式的運(yùn)算符按參加運(yùn)算的操作數(shù)個(gè)數(shù)可分為單目運(yùn)算符、雙目運(yùn)算符、三目運(yùn)算符以及不確定目數(shù)運(yùn)算符單目運(yùn)算符只有一個(gè)操作數(shù),例如(取反運(yùn)算符),(負(fù)號(hào)運(yùn)算符)等雙目運(yùn)算符有兩個(gè)操作數(shù)參與運(yùn)算,例如2+3(加法運(yùn)算符),(賦值運(yùn)運(yùn)算符)等三目運(yùn)算符有三個(gè)操作數(shù)參與運(yùn)算,三目運(yùn)算符只包括問號(hào)運(yùn)算符,行例如不確定目數(shù)運(yùn)算符是操作數(shù)個(gè)數(shù)不確定,可根據(jù)需要重載為不同的操作數(shù)個(gè)數(shù),不確定目數(shù)運(yùn)算符只包括函數(shù)調(diào)用運(yùn)算符“()”在中只能重載單目運(yùn)算符、雙目運(yùn)算符及不確定目數(shù)運(yùn)算符“()”61運(yùn)算符重載方式的運(yùn)算符按參加運(yùn)算的操作數(shù)個(gè)數(shù)可分為單目運(yùn)算4.2.1運(yùn)算符重載為類的成員函數(shù)通過該類的對(duì)象來調(diào)用運(yùn)算符函數(shù),由于對(duì)象本身將作為一個(gè)操作數(shù),因此要求第一個(gè)操作數(shù)的類型為用戶自定義類,參數(shù)表中的參數(shù)個(gè)數(shù)比操作數(shù)個(gè)數(shù)少一。下面是運(yùn)算符重載為類的成員函數(shù)的一般形式:類名{:數(shù)據(jù)成員 ……:公有函數(shù) 返回值類型運(yùn)算符(形參表)運(yùn)算符重載為類的成員函數(shù) ……}; 其中“運(yùn)算符”是運(yùn)算符函數(shù)的專用函數(shù)名。624.2.1運(yùn)算符重載為類的成員函數(shù)通過該類的對(duì)象來調(diào)用運(yùn)算用類的成員函數(shù)重載單目運(yùn)算符單目運(yùn)算符的運(yùn)算符在一般情況下重載為類的成員函數(shù)時(shí),形參表為空,以當(dāng)前對(duì)象(即調(diào)用該運(yùn)算符函數(shù)的對(duì)象)作為運(yùn)算符唯一的操作數(shù)。

63用類的成員函數(shù)重載單目運(yùn)算符單目運(yùn)算符的運(yùn)算符在一般情況下重例4.3單目運(yùn)算符重載為類的成員函數(shù)示例。聲明整型類

{:數(shù)據(jù)成員 ; 數(shù)據(jù)值:公有函數(shù) (n=0):(n){} 構(gòu)造函數(shù) (n){=n;} 設(shè)置數(shù)據(jù)值 (){;} 返回?cái)?shù)據(jù)值 (){();} 重載負(fù)號(hào)運(yùn)算符“-”};() 主函數(shù)(){ i; 定義整型對(duì)象 (6); 設(shè)置數(shù)據(jù)值 <<()<<; 輸出數(shù)據(jù)值6 i=; 對(duì)i進(jìn)行求負(fù)號(hào)運(yùn)算,等價(jià)于(); <<()<<; 輸出數(shù)據(jù)值-6 (""); 輸出系統(tǒng)提示信息 0; 返回值0,返回操作系統(tǒng)}64例4.3單目運(yùn)算符重載為類的成員函數(shù)示例。13用類的成員函數(shù)重載雙目運(yùn)算符雙目運(yùn)算符重載為類的成員函數(shù)時(shí),形參表中有一個(gè)參數(shù),以當(dāng)前對(duì)象作為運(yùn)算符的左操作數(shù),參數(shù)作為右操作數(shù)。65用類的成員函數(shù)重載雙目運(yùn)算符雙目運(yùn)算符重載為類的成員函數(shù)時(shí),例4.4雙目運(yùn)算符重載為類的成員函數(shù)示例。聲明整型類

{:數(shù)據(jù)成員 ; 數(shù)據(jù)值:公有函數(shù) (n=0):(n){} 構(gòu)造函數(shù) (n){=n;} 設(shè)置數(shù)據(jù)值 (){;} 返回?cái)?shù)據(jù)值 ()重載加法運(yùn)算符“+” {(>+);} };() 主函數(shù)(){ i(6),j(9),k; 定義整型對(duì)象 k=i+j; 對(duì)整型對(duì)象求加法運(yùn)算,等價(jià)于(j); <<()<<"+"<<()<<"="<<()<<輸出數(shù)值 (""); 輸出系統(tǒng)提示信息 0; 返回值0,返回操作系統(tǒng)}程序運(yùn)行時(shí)屏幕輸出如下:6+9=15請(qǐng)按任意鍵繼續(xù)...66例4.4雙目運(yùn)算符重載為類的成員函數(shù)示例。程序運(yùn)行時(shí)屏幕輸4.2.2運(yùn)算符重載為類的友元函數(shù)可以像將運(yùn)算符重載為類的友元函數(shù),這時(shí)參數(shù)表中的參數(shù)個(gè)數(shù)與操作數(shù)個(gè)相等,并且操作數(shù)的第一個(gè)操作數(shù)的類型不要求是用戶自定義類。下面是運(yùn)算符重載為類的友元函數(shù)的一般形式:類名{:數(shù)據(jù)成員 ……:公有函數(shù) 返回值類型運(yùn)算符(形參表)運(yùn)算符重載為類的友元函數(shù) ……}; 由于是友元函數(shù),因此在函數(shù)原型前應(yīng)加上關(guān)鍵字。674.2.2運(yùn)算符重載為類的友元函數(shù)可以像將運(yùn)算符重載為類的用類的友元函數(shù)重載單目運(yùn)算符將單目運(yùn)算符重載為類的友元函數(shù)時(shí),友元函數(shù)形參表中有一個(gè)參數(shù)作為該運(yùn)算符的操作數(shù)。68用類的友元函數(shù)重載單目運(yùn)算符將單目運(yùn)算符重載為類的友元函數(shù)時(shí)例4.5單目運(yùn)算符重載為類的友元函數(shù)示例。<> 編譯預(yù)處理命令; 使用命名空間聲明整型類

{:數(shù)據(jù)成員 ; 數(shù)據(jù)值:公有函數(shù) (n=0):(n){} 構(gòu)造函數(shù) (n){=n;} 設(shè)置數(shù)據(jù)值 (){;} 返回?cái)?shù)據(jù)值 ()重載負(fù)號(hào)運(yùn)算符"-" {();}; };……在6.0下會(huì)出現(xiàn)的編譯時(shí)錯(cuò)語(yǔ),是6.0的一個(gè),在6.0中可將:<> 編譯預(yù)處理命令; 使用命名空間改為:<> 編譯預(yù)處理命令<> 包含()的聲明69例4.5單目運(yùn)算符重載為類的友元函數(shù)示例。在6.0下會(huì)例4.5單目運(yùn)算符重載為類的友元函數(shù)示例。……() 主函數(shù)(){ i; 定義整型對(duì)象 (6); 設(shè)置數(shù)據(jù)值 <<()<<; 輸出數(shù)據(jù)值 i=; 對(duì)i進(jìn)行求負(fù)號(hào)運(yùn)算,等價(jià)于(i); <<()<<; 輸出數(shù)據(jù)值 (""); 輸出系統(tǒng)提示信息 0; 返回值0,返回操作系統(tǒng)}程序運(yùn)行時(shí)屏幕輸出如下:6-6請(qǐng)按任意鍵繼續(xù)...70例4.5單目運(yùn)算符重載為類的友元函數(shù)示例。程序運(yùn)行時(shí)屏幕輸用類的友元函數(shù)重載雙目運(yùn)算符將雙目運(yùn)算符重載為類的友元函數(shù)時(shí),友元函數(shù)形參表中包含有兩個(gè)參數(shù),這兩個(gè)參數(shù)分別作為運(yùn)算符的左、右操作數(shù)。71用類的友元函數(shù)重載雙目運(yùn)算符將雙目運(yùn)算符重載為類的友元函數(shù)時(shí)例4.6雙目運(yùn)算符重載為類的友元函數(shù)示例。<> 編譯預(yù)處理命令; 使用命名空間聲明整型類

{:數(shù)據(jù)成員 ; 數(shù)據(jù)值:公有函數(shù) (n=0):(n){} 構(gòu)造函數(shù) (n){=n;} 設(shè)置數(shù)據(jù)值 (){;} 返回?cái)?shù)據(jù)值 (,) {(+);}重載"+",兩個(gè)操作數(shù)都是對(duì)象 (a,) {(a+);} 重載"+",第一操作數(shù)是標(biāo)準(zhǔn)類型 (&a,b) {(+b);} 重載"+",第二操作數(shù)是標(biāo)準(zhǔn)類型};……在6.0下會(huì)出現(xiàn)的編譯時(shí)錯(cuò)語(yǔ),是6.0的一個(gè),在6.0中可將:<> 編譯預(yù)處理命令; 使用命名空間改為:<> 編譯預(yù)處理命令<> 包含()的聲明72例4.6雙目運(yùn)算符重載為類的友元函數(shù)示例。在6.0下會(huì)例4.6雙目運(yùn)算符重載為類的友元函數(shù)示例。……() 主函數(shù)(){ i(6),j(9),k; 定義整型對(duì)象 k=i+j; 等價(jià)于(),兩個(gè)操作數(shù)都是對(duì)象 <<()<<"+"<<()<<"="<<()<<; k=1+j; 1等價(jià)于(1),第一操作數(shù)是標(biāo)準(zhǔn)類型 <<1<<"+"<<()<<"="<<()<<輸出數(shù)值 k=i+2; 2等價(jià)于(i,2),第二操作數(shù)是標(biāo)準(zhǔn)類型 <<()<<"+"<<2<<"="<<()<<輸出數(shù)值 (""); 輸出系統(tǒng)提示信息 0; 返回值0,返回操作系統(tǒng)}程序運(yùn)行時(shí)屏幕輸出如下:6+9=151+9=106+2=8請(qǐng)按任意鍵繼續(xù)...73例4.6雙目運(yùn)算符重載為類的友元函數(shù)示例。程序運(yùn)行時(shí)屏幕輸4.2.3運(yùn)算符重載為普通函數(shù)可以將運(yùn)算符重載為普通函數(shù),這時(shí)參數(shù)表中的參數(shù)個(gè)數(shù)與操作數(shù)個(gè)相等,并且第一個(gè)操作數(shù)的類型不要求是用戶自定義類。下面是運(yùn)算符重載為普通函數(shù)的一般形式:返回值類型運(yùn)算符(形參表);由于是普通函數(shù),因此在函數(shù)原型前不應(yīng)加上關(guān)鍵字。744.2.3運(yùn)算符重載為普通函數(shù)可以將運(yùn)算符重載為普通函數(shù),用普通函數(shù)重載單目運(yùn)算符將單目運(yùn)算符重載為普通函數(shù)時(shí),函數(shù)形參表中有一個(gè)參數(shù)作為該運(yùn)算符的操作數(shù)。75用普通函數(shù)重載單目運(yùn)算符將單目運(yùn)算符重載為普通函數(shù)時(shí),函數(shù)形例4.7單目運(yùn)算符重載為類的普通函數(shù)示例。聲明整型類

{:數(shù)據(jù)成員 ; 數(shù)據(jù)值:公有函數(shù) (n=0):(n){} 構(gòu)造函數(shù) (n){=n;} 設(shè)置數(shù)據(jù)值 (){;} 返回?cái)?shù)據(jù)值};() 重載負(fù)號(hào)運(yùn)算符"-"{(());}; () 主函數(shù)(){ i; 定義整型對(duì)象 (6); 設(shè)置數(shù)據(jù)值 <<()<<; 輸出數(shù)據(jù)值6 i=; 對(duì)i進(jìn)行求負(fù)號(hào)運(yùn)算,等價(jià)于(i); <<()<<; 輸出數(shù)據(jù)值-6 (""); 輸出系統(tǒng)提示信息 0; 返回值0,返回操作系統(tǒng)}76例4.7單目運(yùn)算符重載為類的普通函數(shù)示例。25用普通函數(shù)重載重載雙目運(yùn)算符將雙目運(yùn)算符重載為普通函數(shù)時(shí),函數(shù)形參表中包含有兩個(gè)參數(shù),這兩個(gè)參數(shù)分別作為運(yùn)算符的左、右操作數(shù)。77用普通函數(shù)重載重載雙目運(yùn)算符將雙目運(yùn)算符重載為普通函數(shù)時(shí),函例4.8雙目運(yùn)算符重載為普通函數(shù)示例。聲明整型類

{:數(shù)據(jù)成員 ; 數(shù)據(jù)值:公有函數(shù) (n=0):(n){} 構(gòu)造函數(shù) (n){=n;} 設(shè)置數(shù)據(jù)值 (){;} 返回?cái)?shù)據(jù)值};(,)重載運(yùn)算符"+"{(()+());} () 主函數(shù)(){ i(6),j(9),k; 定義整型對(duì)象 k=i+j; 對(duì)整型對(duì)象求加法運(yùn)算,等價(jià)于() <<()<<"+"<<()<<"="<<()<<; (""); 輸出系統(tǒng)提示信息 0; 返回值0,返回操作系統(tǒng)}程序運(yùn)行時(shí)屏幕輸出如下:6+9=15請(qǐng)按任意鍵繼續(xù)...78例4.8雙目運(yùn)算符重載為普通函數(shù)示例。程序運(yùn)行時(shí)屏幕輸出如運(yùn)算符重載一般地講,單目運(yùn)算符最好重載為類的成員函數(shù),雙目運(yùn)算符最好重載為類的友元函數(shù)或普通函數(shù)。79運(yùn)算符重載一般地講,單目運(yùn)算符最好重載為類的成員函數(shù),雙目運(yùn)*4.3典型運(yùn)算符重載80*4.3典型運(yùn)算符重載29*4.3.1重載賦值運(yùn)算符“=”由于賦值運(yùn)算符重載后實(shí)現(xiàn)將一個(gè)表達(dá)式的值賦值給用戶自定義對(duì)象,也就是賦值運(yùn)算符的第一個(gè)操作數(shù)是類型為用戶自定義類的對(duì)象,因此規(guī)定賦值運(yùn)算符“=”只能重載為類的成員函數(shù),一般重載格式為:類名類名(類名&源對(duì)象){ (&源對(duì)象) { 目的對(duì)象與源對(duì)象不是同一個(gè)對(duì)象 …… 復(fù)制被被賦值對(duì)象 } *; 返回目的對(duì)象}81*4.3.1重載賦值運(yùn)算符“=”由于賦值運(yùn)算符重載后實(shí)現(xiàn)*重載賦值運(yùn)算符“=”如用戶沒有為一個(gè)類重載賦值運(yùn)算符,編譯程序?qū)⑸梢粋€(gè)默認(rèn)賦值運(yùn)算符函數(shù)。賦值運(yùn)算把源對(duì)象的數(shù)據(jù)成員逐個(gè)地復(fù)制到目的對(duì)象的相應(yīng)數(shù)據(jù)成員對(duì)于一般的類,使用默認(rèn)賦值運(yùn)算符函數(shù)都能正常地工作,但當(dāng)一個(gè)類中包含有指針類型的數(shù)據(jù)成員,并且通過指針在構(gòu)造函數(shù)中動(dòng)態(tài)申請(qǐng)了存儲(chǔ)空間,在析構(gòu)函數(shù)中通過指針釋放了動(dòng)態(tài)存儲(chǔ)空間,這種情況可能會(huì)出現(xiàn)運(yùn)行時(shí)錯(cuò)誤82*重載賦值運(yùn)算符“=”如用戶沒有為一個(gè)類重載賦值運(yùn)算符,編例4.9使用賦值運(yùn)算符出現(xiàn)運(yùn)行時(shí)錯(cuò)誤的示例。

{:數(shù)據(jù)成員 *; 串值:公有成員 (*s="") 構(gòu)造函數(shù) { (s)s=""; 將空指針轉(zhuǎn)化為空串 =[(s)+1]; 分配存儲(chǔ)空間 (,s); 復(fù)制串值 } () 復(fù)制構(gòu)造函數(shù) { =[()+1]分配空間 (,); 復(fù)制串值 } (){[];} 析構(gòu)函數(shù) (){<<<<;} 顯示串};……83例4.9使用賦值運(yùn)算符出現(xiàn)運(yùn)行時(shí)錯(cuò)誤的示例。32例4.9使用賦值運(yùn)算符出現(xiàn)運(yùn)行時(shí)錯(cuò)誤的示例。……() 主函數(shù)(){ s1(""),s2; 定義對(duì)象 s2=s1; 使用默認(rèn)賦值運(yùn)算符函數(shù) s1(); 顯示串s1 s2(); 顯示串s2 (""); 輸出系統(tǒng)提示信息 0; 返回值0,返回操作系統(tǒng)}程序運(yùn)行時(shí)屏幕輸出如下:請(qǐng)按任意鍵繼續(xù)...當(dāng)用戶按任一鍵時(shí),屏幕將會(huì)顯示類似!的錯(cuò)誤在和環(huán)境中沒有出上述錯(cuò)誤現(xiàn)象,原因是在發(fā)現(xiàn)釋放一個(gè)已釋放的空間時(shí),不再作釋放操作,也不作異常處理84例4.9使用賦值運(yùn)算符出現(xiàn)運(yùn)行時(shí)錯(cuò)誤的示例。程序運(yùn)行時(shí)屏幕在執(zhí)行“s1("");”語(yǔ)句時(shí),構(gòu)造函數(shù)動(dòng)態(tài)地分配存儲(chǔ)空間,并將返回的地址賦給對(duì)象s1的數(shù)據(jù)成員,然后把“”拷貝到這塊空間中執(zhí)行語(yǔ)句“s2=s1;”時(shí),由于沒有為類重載賦值運(yùn)算符,系統(tǒng)將調(diào)用默認(rèn)賦值運(yùn)算符函數(shù),負(fù)責(zé)將對(duì)象s1的數(shù)據(jù)成員中存放的地址值賦值給對(duì)象s2的數(shù)據(jù)成員對(duì)象s1復(fù)制給對(duì)象s2的僅是其數(shù)據(jù)成員的值,并沒有把指向的動(dòng)態(tài)存儲(chǔ)空間進(jìn)行復(fù)制,當(dāng)遇到對(duì)象的生命期結(jié)束需要撤銷對(duì)象時(shí),首先由s2對(duì)象調(diào)用析構(gòu)函數(shù),將成員所指向的字符串“”所在的動(dòng)態(tài)空間釋放在對(duì)象s1自動(dòng)調(diào)用析構(gòu)函數(shù)之前,對(duì)象s1的數(shù)據(jù)成員指向已釋放的內(nèi)存空間,因此在s1調(diào)用析構(gòu)函數(shù)時(shí),無(wú)法正確執(zhí)行析構(gòu)函數(shù)代碼“[]”,從而導(dǎo)致出錯(cuò)。85在執(zhí)行“s1("");”語(yǔ)句時(shí),構(gòu)造函數(shù)動(dòng)態(tài)地分配存儲(chǔ)空間重載賦值運(yùn)算符解決問題應(yīng)重載賦值運(yùn)算符,復(fù)制指針數(shù)據(jù)成員所指向的動(dòng)態(tài)空間中的內(nèi)容。這樣,兩個(gè)對(duì)象的指針成員就擁有不同的地址值,指向不同的動(dòng)態(tài)存儲(chǔ)空間86重載賦值運(yùn)算符解決問題應(yīng)重載賦值運(yùn)算符,復(fù)制指針數(shù)據(jù)成員所指例4.10重載賦值運(yùn)算符避免例4.9使用默認(rèn)賦值運(yùn)算符的副作用。

{:數(shù)據(jù)成員 *; 串值:公有成員 (*s="") 構(gòu)造函數(shù) { (s)s=""; 將空指針轉(zhuǎn)化為空串 =[(s)+1]分配存儲(chǔ)空間 (,s); 復(fù)制串值 } () 復(fù)制構(gòu)造函數(shù) { =[()+1]分配空間 (,); 復(fù)制串值 } (); 重載賦值運(yùn)算符 (){[];} 析構(gòu)函數(shù) (){<<<<;} 顯示串};……87例4.10重載賦值運(yùn)算符避免例4.9使用默認(rèn)賦值運(yùn)算符的副例4.10重載賦值運(yùn)算符避免例4.9使用默認(rèn)賦值運(yùn)算符的副作用?!?) 重載賦值運(yùn)算符{ () { 目的對(duì)象與源對(duì)象不是同一個(gè)對(duì)象 =[()+1]分配空間 (,)復(fù)制串值 } *; 返回目的對(duì)象}() 主函數(shù)(){ s1(""),s2; 定義對(duì)象 s2=s1; 使用重載賦值運(yùn)算符 s1(); 顯示串s1 s2(); 顯示串s2 (""); 輸出系統(tǒng)提示信息 0; 返回值0,返回操作系統(tǒng)}程序運(yùn)行時(shí)屏幕輸出如下:請(qǐng)按任意鍵繼續(xù)...88例4.10重載賦值運(yùn)算符避免例4.9使用默認(rèn)賦值運(yùn)算符的副4.3.2重載自增1運(yùn)算符“”和自減1運(yùn)算符“”這兩個(gè)運(yùn)算符還有前綴和后綴的差別,和是前綴使用方式,和是后綴使用方式在當(dāng)前的標(biāo)準(zhǔn)中,對(duì)此作了特殊約定,對(duì)于前綴使用方式,與一般單目運(yùn)符的重載方式相同,對(duì)于后綴使用方式,在進(jìn)行運(yùn)算符的重載函數(shù)中增加一個(gè)整型參數(shù)具體重載函數(shù)的聲明格式如下:類名(); 前綴“”重載為類的成員函數(shù)類名(); 后綴“”重載為類的成員函數(shù)類名(); 前綴“”重載為類的成員函數(shù)類名(); 后綴“”重載為類的成員函數(shù)類名(類名&); 前綴“”重載為類的友元函數(shù)類名(類名&,); 后綴“”重載為類的友元函數(shù)類名(類名&); 前綴“”重載為類的友元函數(shù)類名(類名&,); 后綴“”重載為類的友元函數(shù)類名(類名&); 前綴“”重載為普通函數(shù)類名(類名&,); 后綴“”重載為普通函數(shù)類名(類名&); 前綴“”重載為普通函數(shù)類名(類名&,); 后綴“”重載為普通函數(shù)894.3.2重載自增1運(yùn)算符“”和自減1運(yùn)算符“”這兩個(gè)運(yùn)例4.11重載自增1運(yùn)算符“”和自減1運(yùn)算符“”示例。

{:數(shù)據(jù)成員 ; 數(shù)據(jù)值:公有函數(shù) (n=0):(n){} 構(gòu)造函數(shù) (n){=n;} 設(shè)置數(shù)據(jù)值 (){;} 返回?cái)?shù)據(jù)值 (){();} 前綴“ (i){();} 后綴 () 前綴 {();} };(,i) 重載后綴為普通函數(shù){ =a; 用暫存a a=(()-1); a的值減1 ; 返回a原來的值,也就是} …… 90例4.11重載自增1運(yùn)算符“”和自減1運(yùn)算符“”示例。39例4.11重載自增1運(yùn)算符“”和自減1運(yùn)算符“”示例?!?) 主函數(shù)(){ i,j; 定義整型對(duì)象 (6); 設(shè)置數(shù)據(jù)值 j=; 對(duì)i作前綴自增1運(yùn)算等價(jià)于() <<()<<","<<()<<; 輸出數(shù)據(jù)值7,7 (6); 設(shè)置數(shù)據(jù)值 j=; 對(duì)i作后綴自增1運(yùn)算等價(jià)于(0) <<()<<","<<()<<; 輸出數(shù)據(jù)值7,6 (6); 設(shè)置數(shù)據(jù)值 j=; 對(duì)i作前綴自減1運(yùn)算等價(jià)于(i) <<()<<","<<()<<; 輸出數(shù)據(jù)值5,5 (6); 設(shè)置數(shù)據(jù)值 j=; 對(duì)i作后綴自減1運(yùn)算等價(jià)于(i,0) <<()<<","<<()<<; 輸出數(shù)據(jù)值5,6 (""); 輸出系統(tǒng)提示信息 0; 返回值0,返回操作系統(tǒng)}91例4.11重載自增1運(yùn)算符“”和自減1運(yùn)算符“”示例。40*4.3.3重載下標(biāo)運(yùn)算符“[]”下標(biāo)運(yùn)算符“[]”一般用于在數(shù)組中標(biāo)識(shí)數(shù)組元素的位置,在語(yǔ)言中,下標(biāo)運(yùn)算符“[]”是沒有越界檢查功能的??梢酝ㄟ^重載下標(biāo)運(yùn)算符“[]”實(shí)現(xiàn)一種更安全、功能更強(qiáng)的數(shù)組類型下標(biāo)運(yùn)算符的使用方式是a[i],第一個(gè)操作數(shù)為數(shù)組名,重載后就為用戶自定義對(duì)象,因此規(guī)定重載下標(biāo)運(yùn)算符“[]”只能重載為類的成員函數(shù)。定義下標(biāo)運(yùn)算符“[]”的函數(shù)重載的一般聲明格式如下:返回值類型[]();92*4.3.3重載下標(biāo)運(yùn)算符“[]”下標(biāo)運(yùn)算符“[]”一例4.12重載下標(biāo)運(yùn)算符“[]”示例。聲明數(shù)組類模板<>

{:數(shù)據(jù)成員 *; 存儲(chǔ)數(shù)據(jù)元素值 ; 數(shù)組元素個(gè)數(shù):公有函數(shù) ():(){=[];} 構(gòu)造函數(shù) (){;} 析構(gòu)函數(shù) [](i) 下標(biāo)運(yùn)算符"[]"重載為成員函數(shù) { (i<0i>=) { <<"元素位置錯(cuò)!"<<; (1); 退出程序的運(yùn)行,返回到操作系統(tǒng) } [i]; 返回[i] }};……9

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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)論