![第11章77 運算符重載公開課一等獎省優(yōu)質(zhì)課大賽獲獎?wù)n件_第1頁](http://file4.renrendoc.com/view/47744b8a0281c2d1885c369678626ae7/47744b8a0281c2d1885c369678626ae71.gif)
![第11章77 運算符重載公開課一等獎省優(yōu)質(zhì)課大賽獲獎?wù)n件_第2頁](http://file4.renrendoc.com/view/47744b8a0281c2d1885c369678626ae7/47744b8a0281c2d1885c369678626ae72.gif)
![第11章77 運算符重載公開課一等獎省優(yōu)質(zhì)課大賽獲獎?wù)n件_第3頁](http://file4.renrendoc.com/view/47744b8a0281c2d1885c369678626ae7/47744b8a0281c2d1885c369678626ae73.gif)
![第11章77 運算符重載公開課一等獎省優(yōu)質(zhì)課大賽獲獎?wù)n件_第4頁](http://file4.renrendoc.com/view/47744b8a0281c2d1885c369678626ae7/47744b8a0281c2d1885c369678626ae74.gif)
![第11章77 運算符重載公開課一等獎省優(yōu)質(zhì)課大賽獲獎?wù)n件_第5頁](http://file4.renrendoc.com/view/47744b8a0281c2d1885c369678626ae7/47744b8a0281c2d1885c369678626ae75.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第11章運算符重載什么是運算符重載運算符重載方法幾個特殊運算符重載自定義類型轉(zhuǎn)換運算符運算符重載實例什么是運算符重載使系統(tǒng)內(nèi)置運算符能夠用于類類型比如:+運算符能夠?qū)崿F(xiàn)2個對象間加。比如:類A對象a1、a2、a3,希望:a3=a1+a2;即:分別把對象a1和a2各個數(shù)據(jù)組員值對應(yīng)相加,然后賦給對象a3。問題提出把一些事交給系統(tǒng)去做,用戶只要知道相加就可擴(kuò)充運算符功效增強了C++語言可擴(kuò)充性使用戶定義類更像系統(tǒng)內(nèi)置類型運算符重載限制不是全部運算符都能重載重載不能改變運算符優(yōu)先級和結(jié)合性重載不能改變運算符操作數(shù)個數(shù)不能創(chuàng)建新運算符能夠重載運算符+
-
*
/
%
^
&
|
~
!
=
<
>
+=
-=
*=
/=
%=
^=
&=
|=
<<
>>
>>=
<<=
==
!=
<=
>=
&&
||
++
--
->*
,
->
[]
()
new
delete
new[]
delete[]
不能重載運算符
.
.*
::
?:
sizeof第11章運算符重載什么是運算符重載運算符重載方法幾個特殊運算符重載自定義類型轉(zhuǎn)換運算符運算符重載實例運算符重載方法運算符重載就是寫一個函數(shù)解釋某個運算符在某個類中含義要使得系統(tǒng)能自動找到重載這個函數(shù),函數(shù)名必須要表達(dá)出和某個被重載運算符聯(lián)絡(luò)。C++中要求,重載函數(shù)名為operator@其中,@為要重載運算符。如要重載“+”運算符,該重載函數(shù)名為operator+。要重載賦值運算符,函數(shù)名為operator=。函數(shù)原型
運算符重載不能改變運算符運算對象數(shù)。所以,重載函數(shù)形式參數(shù)個數(shù)(包含組員函數(shù)隱式指針this)與運算符運算對象數(shù)相同運算符重載能夠重載成組員函數(shù)也能夠重載成全局函數(shù)實現(xiàn)。重載成全局函數(shù)時,最好把此函數(shù)設(shè)為友員函數(shù)假如作為類組員函數(shù),它形式參數(shù)個數(shù)比運算符運算對象數(shù)少1。這是因為組員函數(shù)有一個隱含參數(shù)this。在C++中,把隱含參數(shù)this作為運算符第一個參數(shù)。當(dāng)把一個一元運算符重載成組員函數(shù)時,該函數(shù)沒有形式參數(shù)。把一個二元運算符重載成組員函數(shù)時,該函數(shù)只有一個形式參數(shù),就是右操作數(shù),當(dāng)前對象是左操作數(shù)。重載實例為rational類增加“+”和“*”以及比較重載函數(shù),用以替換現(xiàn)有add和multi函數(shù)方案一:重載成組員函數(shù)classRational{private: intnum; intden; voidReductFraction();public: Rational(intn=0,intd=1){num=n;den=d;}
Rationaloperator+(constRational&r1)const;
Rationaloperator*(constRational&r1)const; booloperator<(constRational&r1)const; booloperator==(constRational&r1)const; booloperator>(constRational&r1)const; booloperator<=(constRational&r1)const; booloperator>=(constRational&r1)const; booloperator!=(constRational&r1)const; voiddisplay(){cout<<num<<'/'<<den;}}函數(shù)實現(xiàn)RationalRational::operator+(constRational&r1)const{Rationaltmp;tmp.num=num*r1.den+r1.num*den;
tmp.den=den*r1.den;tmp.ReductFraction();returntmp;}RationalRational::operator*(constRational&r1)const{Rationaltmp;tmp.num=num*r1.num;
tmp.den=den*r1.den;tmp.ReductFraction();returntmp;}boolRational::operator<(constRational&r1)const{returnnum*r1.den<den*r1.num;}boolRational::operator==(constRational&r1)const{returnnum==r1.num&&den==r1.den;}boolRational::operator>(constRational&r1)const{returnnum*r1.den>den*r1.num;}boolRational::operator<=(constRational&r1)const{returnnum*r1.den<=den*r1.num;}boolRational::operator>=(constRational&r1)const{returnnum*r1.den>=den*r1.num;}boolRational::operator!=(constRational&r1)const{return!(*this==r1);}方案二:重載成友員函數(shù)classRational{friendRationaloperator+(constRational&r1,constRational&r2);
friendRationaloperator*(constRational&r1,constRational&r2);friendbooloperator<(constRational&r1,constRational&r2); friendbooloperator==(constRational&r1,constRational&r2); friendbooloperator>(constRational&r1,constRational&r2); friendbooloperator<=(constRational&r1,constRational&r2); friendbooloperator>=(constRational&r1,constRational&r2); friendbooloperator!=(constRational&r1,constRational&r2);private: intnum; intden; voidReductFraction();public: Rational(intn=0,intd=1){num=n;den=d;} voiddisplay(){cout<<num<<'/'<<den;}};函數(shù)實現(xiàn)Rationaloperator+(constRational&r1,constRational&r2){Rationaltmp;
tmp.num=r1.num*r2.den+r2.num*r1.den;
tmp.den=r1.den*r2.den;tmp.ReductFraction();returntmp;}Rationaloperator*(constRational&r1,constRational&r2){Rationaltmp;tmp.num=r1.num*r2.num;
tmp.den=r1.den*r2.den;tmp.ReductFraction();returntmp;}其它函數(shù)實現(xiàn)略重載后有理數(shù)類使用intmain(){Rationalr1(1,6),r2(1,6),r3;r3=r1+r2;r1.display();cout<<"+";r2.display();cout<<"=";r3.display();cout<<endl;r3=r1*r2;r1.display();cout<<"*";r2.display();cout<<"=";r3.display();cout<<endl;return0;}全局函數(shù)vs組員函數(shù)大多數(shù)運算符都能夠重載成組員函數(shù)或全局函數(shù)。賦值(=)、下標(biāo)([])函數(shù)調(diào)用(())和組員訪問(->)必須重載成組員函數(shù)。含有賦值意義運算符,如復(fù)合賦值運算符以及++和--,不一定非要定義為組員函數(shù),但最好定義為組員函數(shù)。含有兩個運算對象運算符最好重載為全局函數(shù),這么能夠使得應(yīng)用愈加靈活。假如把加運算定義成全局函數(shù),r是有理數(shù)類對象,則2+r是一個正當(dāng)表示式。第11章運算符重載什么是運算符重載運算符重載方法幾個特殊運算符重載自定義類型轉(zhuǎn)換運算符運算符重載實例幾個特殊運算符重載賦值運算符下標(biāo)運算符函數(shù)調(diào)用運算符++和—運算符重載重載函數(shù)原型設(shè)計考慮輸入輸出運算符重載賦值運算符對任一類,假如用戶沒有自定義賦值運算符函數(shù),那么系統(tǒng)為其生成一個缺省賦值運算符函數(shù),在對應(yīng)數(shù)據(jù)組員間賦值。普通情況下,這個缺省賦值運算符重載函數(shù)能滿足用戶需求。不過,當(dāng)類含有類型為指針數(shù)據(jù)組員時,可能會帶來一些麻煩。對DoubleArray類對象執(zhí)行
array1=array2問題會引發(fā)內(nèi)存泄漏使這兩個數(shù)組元素存放于同一塊空間中當(dāng)這兩個對象析構(gòu)時,先析構(gòu)對象會釋放存放數(shù)組元素空間。而當(dāng)后一個對象析構(gòu)時,無法釋放存放數(shù)組元素空間賦值運算符“=”原型賦值運算符只能重載成組員函數(shù)函數(shù)原型:X&X::operator=(constX&source){//賦值過程}一旦創(chuàng)建了對象x1,x2,能夠用x1=x2賦值。DoubleArray類
賦值運算符重載函數(shù)DoubleArray&DoubleArray::operator=(constDoubleArray&right){if(this==&right)return*this;delete[]storage;low=right.low;high=right.high;storage=newdouble[high-low+1];for(inti=0;i<=high-low;++i)storage[i]=right.storage[i];//復(fù)制數(shù)組元素return*this;}賦值運算符重載關(guān)鍵點普通來講,需要自定義拷貝結(jié)構(gòu)函數(shù)類也需要自定義賦值運算符重載函數(shù)。在賦值運算符重載函數(shù)中,已經(jīng)將參數(shù)值賦值給了當(dāng)前對象,那為何還需要返回值呢?記住,在C++中,賦值是一個運算,它能夠形成一個表示式,而該表示式結(jié)果值就是賦給左邊對象值。所以,賦值運算符重載函數(shù)必須返回賦給左邊對象值。賦值運算符重載和拷貝結(jié)構(gòu)函數(shù)普通來講,需要拷貝結(jié)構(gòu)函數(shù)類也需要重載賦值運算符定義對象時給對象賦初值調(diào)用是拷貝結(jié)構(gòu)函數(shù)程序語句部分中賦值語句調(diào)用是賦值運算符重載函數(shù)幾個特殊運算符重載賦值運算符下標(biāo)運算符函數(shù)調(diào)用運算符++和—運算符重載重載函數(shù)原型設(shè)計考慮輸入輸出運算符重載下標(biāo)運算符重載能否象普通數(shù)組那樣經(jīng)過下標(biāo)運算操作DoubleArray類對象,這么能夠使DoubleArray類更像一個功效內(nèi)置數(shù)組。能夠經(jīng)過重載下標(biāo)運算符([])來實現(xiàn)下標(biāo)運算符是二元運算符,第一個運算數(shù)是數(shù)組名,第二個運算數(shù)是下標(biāo)值下標(biāo)運算符必須重載成組員函數(shù)DoubleArray類[]重載double&DoubleArray::operator[](intindex){if(index<low||index>high){cout<<"下標(biāo)越界";exit(-1);}returnstorage[index-low];}DoubleArray類使用定義:DoubleArrayarray(20,30);數(shù)組輸入:for(i=20;i<=30;++i){ cout<<"請輸入第"<<i<<"個元素:"; cin>>array[i];}數(shù)組輸出:for(i=20;i<=30;++i) cout<<array[i]<<'\t';幾個特殊運算符重載賦值運算符下標(biāo)運算符函數(shù)調(diào)用運算符++和—運算符重載重載函數(shù)原型設(shè)計考慮輸入輸出運算符重載函數(shù)調(diào)用運算符函數(shù)調(diào)用運算符()是一個二元運算符。它第一個運算對象是函數(shù)名,第二個參數(shù)是形式參數(shù)表。運算結(jié)果是函數(shù)返回值。一個類重載了函數(shù)調(diào)用運算符,就能夠把這個類對象當(dāng)做函數(shù)來使用函數(shù)調(diào)用運算符重載函數(shù)調(diào)用運算符必須重載成組員函數(shù)函數(shù)調(diào)用運算符重載函數(shù)原型為函數(shù)返回值operator()(形式參數(shù)表);函數(shù)調(diào)用運算符重載實例在DoubleArray類增加一個功效:取數(shù)組中一部分元素形成一個新數(shù)組比如,在一個下標(biāo)范圍為10到20數(shù)組arr中取出下標(biāo)為第12到15元素,形成一個下標(biāo)范圍為2到5數(shù)組存放在數(shù)組arr1中,能夠調(diào)用arr1=arr(12,15,2)。DoubleArrayoperator()(intstart,intend,intlh){ if(start>end||start<low||end>high){cout<<"下標(biāo)越界";exit(-1);}
DoubleArraytmp(lh,lh+end-start); for(inti=0;i<end-start+1;++i)tmp.storage[i]=storage[start+i-low]; returntmp;}幾個特殊運算符重載賦值運算符下標(biāo)運算符函數(shù)調(diào)用運算符++和—運算符重載重載函數(shù)原型設(shè)計考慮輸入輸出運算符重載“++”和“--”重載++、--:是一元操作符這兩個操作符能夠是前綴,也能夠是后綴。而且前綴和后綴含義是有區(qū)分。所以,必須有兩個重載函數(shù)。問題:兩個重載函數(shù)有相同原型區(qū)分方法:前綴:一元操作符。后綴:二元操作符?!?+”和“--”重載cont.組員函數(shù)重載++ob重載為:ob.operator++()ob--重載為:ob.operator--(int)友元函數(shù)重載++ob重載為:operator++(X&ob)ob--重載為:operator--(X&ob,int)調(diào)用時,參數(shù)int普通傳遞給值0。++、--重載實例設(shè)計一個會報警計數(shù)器類。該計數(shù)器從0開始計數(shù),當(dāng)?shù)诌_(dá)預(yù)先設(shè)定好報警值時,計數(shù)器會發(fā)出報警消息,計數(shù)器值不再增加。類定義classCounter{ intvalue;//計數(shù)器值 intalarm;//報警值public: Counter(inta){value=0;alarm=a;} Counter&operator++();//前綴++重載 Counteroperator++(int);//后綴++重載 voidprint(){cout<<value<<endl;}};類實現(xiàn)Counter&Counter::operator++(){if(value==alarm)cout<<"已超出報警值\n";else{++value;if(value==alarm)cout<<"已抵達(dá)報警值\n"; }return*this;}CounterCounter::operator++(intx){Countertmp=*this;//保留對象修改前狀態(tài)if(value==alarm)cout<<"已超出報警值\n";else{++value;if(value==alarm)cout<<"已抵達(dá)報警值\n"; }returntmp;//返回修改前狀態(tài)}類使用intmain(){Countercnt(3);//定義一個Counter類對象,報警值為3cnt.print();/顯示對象當(dāng)前值,此時輸出為0++cnt;cnt.print();//此時輸出為1(++cnt).print();//調(diào)用前綴++,輸出2(cnt++).print();//調(diào)用后綴++,當(dāng)前對象value已經(jīng)//加1,報警。但輸出是2cnt.print();//輸出值為3return0;}幾個特殊運算符重載賦值運算符下標(biāo)運算符函數(shù)調(diào)用運算符++和—運算符重載重載函數(shù)原型設(shè)計考慮輸入輸出運算符重載重載函數(shù)原型設(shè)計考慮參數(shù)設(shè)計對于任何函數(shù)參數(shù),假如僅需要從參數(shù)中讀,而不改變它,普通用const引用來傳遞。只有會修改左值參數(shù)運算符,如賦值運算符,左值參數(shù)不是常量,所以用地址傳遞返回值類型設(shè)計運算符結(jié)果產(chǎn)生一個新值,就需要產(chǎn)生一個作為返回值新對象對于邏輯運算符,人們希望最少得到一個int或bool返回值全部賦值運算符(如,=,+=等)均改變左值,應(yīng)該能夠返回一個剛才改變了左值非常量引用值返回時優(yōu)化在返回一個對象時,通常有兩種寫法。如某函數(shù)返回一個Rational類對象,它值為兩個參數(shù)組員對應(yīng)相加。它兩種寫法為returnRational(left.num+right.num,left.den+right.den);Rationaltmp;tmp.num=left.num+right.num;tmp.den=left.den+right.den;returntmp;兩種寫法比較前者意思是“創(chuàng)建一個暫時對象,并返回它”。它只調(diào)用了一次結(jié)構(gòu)函數(shù)。而后者,先創(chuàng)建了一個對象tmp,這將調(diào)用結(jié)構(gòu)函數(shù),然后對tmp賦值,最終返回tmp。而在返回tmp時,又要創(chuàng)建一個暫時對象,并調(diào)用拷貝結(jié)構(gòu)函數(shù)用tmp對它進(jìn)行初始化。在函數(shù)執(zhí)行結(jié)束時,還要調(diào)用析構(gòu)函數(shù)析構(gòu)tmp。幾個特殊運算符重載賦值運算符下標(biāo)運算符函數(shù)調(diào)用運算符++和—運算符重載重載函數(shù)原型設(shè)計考慮輸入輸出運算符重載輸入輸出運算符重載輸入輸出運算符必須被重載成全局函數(shù)。輸出運算符重載輸入運算符重載借助于流插入運算符(>>)和流提取運算符(<<)輸入和輸出用戶自定義類對象輸出重載函數(shù)原型ostream&operator<<(ostream&os,constClassType&obj){os<<要輸出內(nèi)容;returnos;}實例ostream&operator<<(ostream&os,constRational&obj)//輸出重載函數(shù){os<<obj.num<<'/'<<obj.den;returnos;}如定義:Rationalr(2,6);執(zhí)行cout<<r;結(jié)果是1/3。為Rational類重載輸出輸入輸出運算符重載輸入輸出運算符必須被重載成全局函數(shù)。輸出運算符重載輸入運算符重載借助于流插入運算符(>>)和流提取運算符(<<)輸入和輸出用戶自定義類對象輸入重載函數(shù)原型istream&operator>>(istream&is,ClassType&obj){is>>要輸入內(nèi)容;returnis;}實例istream&operator>>(istream&in,Rational&obj)//輸入重載函數(shù){in>>obj.num>>obj.den;obj.ReductFraction();returnin;}如定義:Rationalr;能夠用cin>>r從鍵盤輸入r數(shù)據(jù)。如輸入為:13執(zhí)行cout<<r;結(jié)果是1/3。為Rational類重載輸入第11章運算符重載什么是運算符重載運算符重載方法幾個特殊運算符重載自定義類型轉(zhuǎn)換運算符運算符重載實例類型轉(zhuǎn)換--系統(tǒng)預(yù)定義類型間轉(zhuǎn)換隱式類型轉(zhuǎn)換
※賦值時
※運算時顯式類型轉(zhuǎn)換※強制轉(zhuǎn)換法:(類型名)表示式※函數(shù)法:類型名(表示式)自定義類型轉(zhuǎn)換運算符類類型能否和其它類類型或內(nèi)置類型相互轉(zhuǎn)換?內(nèi)置類型之所以能相互轉(zhuǎn)換是因為系統(tǒng)預(yù)先制訂了轉(zhuǎn)換規(guī)則,并寫好了完成轉(zhuǎn)換程序。類類型與其它類類型或內(nèi)置類型之間怎樣轉(zhuǎn)換,編譯器預(yù)先無法知道。類設(shè)計者必須定義轉(zhuǎn)換方法。類型轉(zhuǎn)換內(nèi)置類型到類類型轉(zhuǎn)換類類型到其它類型轉(zhuǎn)換內(nèi)置類型到類類型轉(zhuǎn)換利用結(jié)構(gòu)函數(shù)進(jìn)行轉(zhuǎn)換。比如,對于Rational類對象r,能夠執(zhí)行r=2。此時,編譯器隱式地調(diào)用Rational結(jié)構(gòu)函數(shù),傳給它一個參數(shù)2。結(jié)構(gòu)函數(shù)將結(jié)構(gòu)出一個num=2,den=1Rational類對象,并將它賦給r。explicit結(jié)構(gòu)函數(shù)任何單參數(shù)結(jié)構(gòu)函數(shù)都能夠被編譯器用來執(zhí)行隱式轉(zhuǎn)換,即把內(nèi)置類型轉(zhuǎn)換成對應(yīng)類類型。在一些情況下,隱式轉(zhuǎn)換是不受歡迎。將單參數(shù)結(jié)構(gòu)函數(shù)定義為explicit,將告訴編譯器不允許執(zhí)行隱式轉(zhuǎn)換。如將Ratioanal類結(jié)構(gòu)函數(shù)定義成explicitRational(intn1=0,intn2=1)則對于Rational類對象r1和r2,執(zhí)行r1=2+r2;編譯器就會報錯類型轉(zhuǎn)換內(nèi)置類型到類類型轉(zhuǎn)換類類型到其它類型轉(zhuǎn)換類類型到內(nèi)置類型或其它類類型轉(zhuǎn)換能夠經(jīng)過類型轉(zhuǎn)換函數(shù)實現(xiàn)類型轉(zhuǎn)換函數(shù)必須重載成組員函數(shù)類型轉(zhuǎn)換函數(shù)格式operator目標(biāo)類型名()const{…return(結(jié)果為目標(biāo)類型表示式);}類型轉(zhuǎn)換函數(shù)特點無參數(shù),無返回值是const函數(shù)Rational類到double轉(zhuǎn)換轉(zhuǎn)換函數(shù)定義:operatordouble()const{return(double(num)/den);}有了這個函數(shù),我們能夠?qū)⒁粋€Rational類對象r賦給一個double類型變量x。如r值為(1,3),經(jīng)過賦值x=r后,x值為0.333333經(jīng)過運算符重載后Rational類classRational{ friendistream&operator>>(istream&in,Rational&obj); friendostream&operator<<(ostream&os,constRational&obj); friendRationaloperator+(constRational&r1,constRational&r2);friendRationaloperator*(constRational&r1,constRational&r2);private: intnum; intden; voidReductFraction();public: Rational(intn=0,intd=1){num=n;den=d;} operatordouble()const{return(double(num)/den);}};Rational類使用#include<iostream.h>#include"Rational.h"intmain(){Rationalr1,r2,r3,r4;doublex;cout<<"輸入r1:";cin>>r1;cout<<"輸入r2:";cin>>r2;r3=r1+r2;
cout<<r1<<'+'<<r2<<"="<<r3<<endl;
r3=r1*r2;
cout<<r1<<'*'<<r2<<"="<<r3<<endl;r4=(r1+r2)*r3;
cout<<"(r1+r2)*r3值為:"<<r4<<endl;x=5.5-r1;cout<<"5.5-r1值為:"<<x<<endl;cout<<(r1<r2?r1:r2)<<endl;return0;}輸入r1:13輸入r2:261/3+1/3=2/31/3*1/3=1/9(r1+r2)*r3值為2/275.5-r1值為:5.166671/3
第11章運算符重載什么是運算符重載運算符重載方法幾個特殊運算符重載自定義類型轉(zhuǎn)換運算符運算符重載實例運算符重載實例完善DoubleArray類DoubleArray.h#ifndef_array_h#define_array_h#include<iostream.h>classDoubleArray{ friendostream&operator<<(ostream&os,constDoubleArray&obj); friendistream&operator>>(istream&is,DoubleArray&obj); friendbooloperator==(constDoubleArray&obj1,constDoubleArray&obj2);private:intlow;inthigh;double*storage;public:DoubleArray(intlh=0,intrh=0):low(lh),high(rh){storage=newdouble[high-low+1];} DoubleArray(constDoubleArray&arr);
DoubleArray&operator=(constDoubleArray&right);
double&operator[](intindex);constdouble&operator[](intindex)const;
DoubleArrayoperator()(intstart,intend,intlh);
~DoubleArray(){delete[]storage;}};#endifDoubleArray.cpp//文件名:DoubleArray.cpp//DoubleArray類實現(xiàn)#include<cassert>#include"DoubleArray.h“DoubleArray::DoubleArray(constDoubleArray&arr){low=arr.low;high=arr.high;storage=newdouble[high-low+1];for(inti=0;i<high-low+1;++i)storage[i]=arr.storage[i];}operator=DoubleArray&DoubleArray::operator=(constDoubleArray&a){if(this==&a)return*this;
delete[]storage;low=a.low;high=a.high;storage=newdouble[high-low+1];for(inti=0;i<=high-low;++i)storage[i]=a.storage[i];return*this;}operator[]double&DoubleArray::operator[](intindex){assert(index>=low&&index<=high);returnstorage[index-low];}constdouble&DoubleArray::operator[](intindex)const{assert(index>=low&&index<=high);returnstorage[index-low];}operator<<ostream&operator<<(ostream&os,constDoubleArray&obj){os<<"數(shù)組內(nèi)容為:\n";for(inti=obj.low;i<=obj.high;++i)os<<obj[i]<<'\t';os<<endl;returnos;}operator>>istream&operator>>(istream&is,DoubleArray&obj){cout<<"請輸入數(shù)組元素["<<obj.low<<","<<obj.high<<"]:\n";for(inti=obj.low;i<=obj.high;++i)is>>obj[i];returnis;}operator==booloperator==(c
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 出售蔬菜大棚合同范例
- 公司設(shè)備轉(zhuǎn)讓合同范例
- 2025年中國連鎖超市行業(yè)市場前景預(yù)測及投資方向研究報告
- 2025年貨廂門鎖項目可行性研究報告
- 某某鄉(xiāng)農(nóng)田水利灌溉維修合同范本
- 加工制作合同范本樣板
- 農(nóng)村買賣土地合同范本
- 債務(wù)分期合同范例
- 農(nóng)田地出租合同范例
- 個人簽銷售合同范本
- 項目獎金分配獎勵制度和方案完整版
- 上海中學(xué)國際部幼升小面試真題
- 贏在團(tuán)隊執(zhí)行力課件
- 慢性胰腺炎課件
- 北京理工大學(xué)應(yīng)用光學(xué)課件第四章
- 陰道鏡幻燈課件
- PCB行業(yè)安全生產(chǎn)常見隱患及防范措施課件
- DB32∕T 186-2015 建筑消防設(shè)施檢測技術(shù)規(guī)程
- 2022年福建泉州中考英語真題【含答案】
- 汽車座椅骨架的焊接夾具畢業(yè)設(shè)計說明書(共23頁)
- 露天礦山職業(yè)危害預(yù)先危險分析表
評論
0/150
提交評論