




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
運算符重載
operatoroverloading張俊2006-11-212/10/20221C++與面向對象程序設計運算符重載
operatoroverloading張主要內容和教學要求★掌握常用運算符的重載★理解運算符重載的兩種形式12/10/20222C++與面向對象程序設計主要內容和教學要求★掌握常用運算符的重載12/10/2022為什么要重載運算符★應用系統的運算符集;★為自定義類型提供簡潔的表達式; Complexa,b,c; 不重載運算符: a.Print();c=Add(a,b); 重載運算符:cout<<a;c=a+b;12/10/20223C++與面向對象程序設計為什么要重載運算符★應用系統的運算符集;12/10/2022運算符重載的實現運算符函數(operatorfunction) Typea,b,c; cin>>a>>b; c=a+b; cout<<c;?????12/10/20224C++與面向對象程序設計運算符重載的實現運算符函數(operatorfunctio當前對象調用成員函數的對象,對于該成員函數來說即為當前對象。12/10/20225C++與面向對象程序設計當前對象調用成員函數的對象,對于該成員函數來說即為當前對象。當前對象(左操作數)12/10/20226C++與面向對象程序設計當前對象(左操作數)12/10/20226C++與面向對象程關于當前對象的作用1.左操作數作為當前對象調用運算符函數;2.左操作數隱含地作為二元運算符的第一個參數;3.用this指針或者直接訪問左操作數的數據成員;4.右操作數作為運算符重載函數的實參;12/10/20227C++與面向對象程序設計關于當前對象的作用1.左操作數作為當前對象調用運算符函數;1運算符重載的限制★一個中心:不能夠改變運算符的性質 操作數的個數; 優先級; 結合性; 語法結構;12/10/20228C++與面向對象程序設計運算符重載的限制★一個中心:不能夠改變運算符的性質12/10三個基本點★不能創建新的運算符★不能改變運算符的含義★不能僅僅操作基本數據類型(兩個操作數中必須有一個自定義類型)12/10/20229C++與面向對象程序設計三個基本點★不能創建新的運算符12/10/20229C++與可以不重載的運算符默認情況下,不需要重載: 賦值運算符:= 地址運算符:&12/10/202210C++與面向對象程序設計可以不重載的運算符默認情況下,不需要重載:12/10/202不可重載和經常重載的運算符★不允許重載的運算符
.
.*
::
?:
sizeof★經常重載的運算符 算術運算符:+
-
*
/
++
-- 關系運算符:>
>=
<
<=
==
!= 賦值運算符:=
+=
-=
*=
/= I/O運算符:<<
>> 一元運算符:[]
()
!
-12/10/202211C++與面向對象程序設計不可重載和經常重載的運算符★不允許重載的運算符12/10/2運算符重載的形式★成員函數形式:運算符函數作為類的成員★非成員函數形式:友元外部函數(全局函數)12/10/202212C++與面向對象程序設計運算符重載的形式★成員函數形式:運算符函數作為類的成員12/Complex類詳解12/10/202213C++與面向對象程序設計Complex類詳解12/10/202213C++與面向對象數據成員及構造函數12/10/202214C++與面向對象程序設計數據成員及構造函數12/10/202214C++與面向對象程賦值運算符成員函數原型成員函數定義成員函數調用12/10/202215C++與面向對象程序設計賦值運算符成員函數原型成員函數定義成員函數調用12/10/2算術運算符的重載成員函數原型思考:為什么只有一個加數?12/10/202216C++與面向對象程序設計算術運算符的重載成員函數原型思考:為什么只有一個加數?12/加法運算符的實現及調用成員函數定義成員函數調用12/10/202217C++與面向對象程序設計加法運算符的實現及調用成員函數定義成員函數調用12/10/212/10/202218C++與面向對象程序設計12/10/202218C++與面向對象程序設計復合運算的運算符成員函數定義成員函數原型12/10/202219C++與面向對象程序設計復合運算的運算符成員函數定義成員函數原型12/10/2022成員函數定義成員函數調用12/10/202220C++與面向對象程序設計成員函數定義成員函數調用12/10/202220C++與面向一元運算符的重載成員函數原型成員函數定義成員函數調用12/10/202221C++與面向對象程序設計一元運算符的重載成員函數原型成員函數定義成員函數調用12/1成員函數形式的特點函數定義:作為類的成員函數。函數參數:二元運算符只帶一個參數,一元運算符不帶參數。函數調用:當前對象作為左操作數,函數參數作為右操作數。a.operator+(b)語法比較晦澀,不易理解12/10/202222C++與面向對象程序設計成員函數形式的特點函數定義:作為類的成員函數。12/10/2友元函數形式的重載友元函數定義友元函數原型友元函數調用12/10/202223C++與面向對象程序設計友元函數形式的重載友元函數定義友元函數原型友元函數調用12/友元函數形式的重載12/10/202224C++與面向對象程序設計友元函數形式的重載12/10/202224C++與面向對象程友元函數形式的特點函數定義:作為類的友元函數函數參數:二元運算符帶兩個參數,一元運算符帶一個參數函數調用:兩個對象都作為函數的參數operator+(a,b);是幾元運算符就帶幾個操作數,語法符合習慣,易懂,但少用。12/10/202225C++與面向對象程序設計友元函數形式的特點函數定義:作為類的友元函數12/10/20成員函數形式遇到的問題★當運算符的左操作數不是該類的對象時,出現問題。 如 Complexa,b; 重載:operator+(constComplex&r) a=3+b;★3不是Complex的對象,不能調用上述重載的運算符。因而不能計算。12/10/202226C++與面向對象程序設計成員函數形式遇到的問題★當運算符的左操作數不是該類的對象時,友元函數形式的另一類用法成員函數原型成員函數定義成員函數調用12/10/202227C++與面向對象程序設計友元函數形式的另一類用法成員函數原型成員函數定義成員函數調用流插入符和提取符的重載cin>>a>>b;cout<<a<<b;運算符的左操作數cout不是Complex類的對象,因此必須采用友元形式的重載。12/10/202228C++與面向對象程序設計流插入符和提取符的重載cin>>a>>b;12/112/10/202229C++與面向對象程序設計12/10/202229C++與面向對象程序設計請分析下列運算符重載的形式T為自定義類型,并設下列運算符都有意義。[1]Ta,bc; intx;[2]cin>>a>>b>>c;cout<<a<<b<<c;[3]a=b; [4]c=b+a; c=b–x;[5]c=x+a; c=x–b;12/10/202230C++與面向對象程序設計請分析下列運算符重載的形式T為自定義類型,并設下列運算符都有String類詳解
自課本P311開始12/10/202231C++與面向對象程序設計String類詳解
自課本P311開始12/10/2022312/10/202232C++與面向對象程序設計12/10/202232C++與面向對象程序設計邏輯非運算符友元函數的形式請參考P31312/10/202233C++與面向對象程序設計邏輯非運算符友元函數的形式請參考P31312/10/2022重載流插入和提取運算符12/10/202234C++與面向對象程序設計重載流插入和提取運算符12/10/202234C++與面向對流插入符調用分析12/10/202235C++與面向對象程序設計流插入符調用分析12/10/202235C++與面向對象程序復制構造函數12/10/202236C++與面向對象程序設計復制構造函數12/10/202236C++與面向對象程序設計賦值運算符12/10/202237C++與面向對象程序設計賦值運算符12/10/202237C++與面向對象程序設計字符串連接“+、+=”12/10/202238C++與面向對象程序設計字符串連接“+、+=”12/10/202238C++與面向轉換運算符有什么樣的轉換構造函數,就應該提供什么樣的轉換運算符數據類型轉換★算術運算★賦值★實參傳給形參★返回值12/10/202239C++與面向對象程序設計轉換運算符有什么樣的轉換構造函數,就應該提供什么樣的轉換運算Rational類詳解12/10/202240C++與面向對象程序設計Rational類詳解12/10/202240C++與面向對12/10/202241C++與面向對象程序設計12/10/202241C++與面向對象程序設計求兩個數的最大公約數12/10/202242C++與面向對象程序設計求兩個數的最大公約數12/10/202242C++與面向對象求兩個數的最小公倍數12/10/202243C++與面向對象程序設計求兩個數的最小公倍數12/10/202243C++與面向對象對分數進行標準化12/10/202244C++與面向對象程序設計對分數進行標準化12/10/202244C++與面向對象程序各種構造函數12/10/202245C++與面向對象程序設計各種構造函數12/10/202245C++與面向對象程序設計復制構造函數12/10/202246C++與面向對象程序設計復制構造函數12/10/202246C++與面向對象程序設計成員函數形式
的重載12/10/202247C++與面向對象程序設計成員函數形式
的重載12/10/202247C++與面向對象賦值運算符的重載12/10/202248C++與面向對象程序設計賦值運算符的重載12/10/202248C++與面向對象程序算術運算符的重載12/10/202249C++與面向對象程序設計算術運算符的重載12/10/202249C++與面向對象程序12/10/202250C++與面向對象程序設計12/10/202250C++與面向對象程序設計復合運算符12/10/202251C++與面向對象程序設計復合運算符12/10/202251C++與面向對象程序設計關系運算符12/10/202252C++與面向對象程序設計關系運算符12/10/202252C++與面向對象程序設計12/10/202253C++與面向對象程序設計12/10/202253C++與面向對象程序設計12/10/202254C++與面向對象程序設計12/10/202254C++與面向對象程序設計12/10/202255C++與面向對象程序設計12/10/202255C++與面向對象程序設計12/10/202256C++與面向對象程序設計12/10/202256C++與面向對象程序設計12/10/202257C++與面向對象程序設計12/10/202257C++與面向對象程序設計12/10/202258C++與面向對象程序設計12/10/202258C++與面向對象程序設計成員函數形式的特點★運算符重載函數作為類的成員函數。★二元運算符重載函數只帶一個參數,因為另外一個參數隱含為this。operator+(Complex*this,constComplex&);★一元運算符重載函數不帶參數。12/10/202259C++與面向對象程序設計成員函數形式的特點★運算符重載函數作為類的成員函數。12/1友元函數形式
的重載12/10/202260C++與面向對象程序設計友元函數形式
的重載12/10/202260C++與面向對象12/10/202261C++與面向對象程序設計12/10/202261C++與面向對象程序設計12/10/202262C++與面向對象程序設計12/10/202262C++與面向對象程序設計12/10/202263C++與面向對象程序設計12/10/202263C++與面向對象程序設計12/10/202264C++與面向對象程序設計12/10/202264C++與面向對象程序設計12/10/202265C++與面向對象程序設計12/10/202265C++與面向對象程序設計12/10/202266C++與面向對象程序設計12/10/202266C++與面向對象程序設計12/10/202267C++與面向對象程序設計12/10/202267C++與面向對象程序設計請完成其定義12/10/202268C++與面向對象程序設計請完成其定義12/10/202268C++與面向對象程序設計重載<<和>>12/10/202269C++與面向對象程序設計重載<<和>>12/10/202269C++與面向對象程序設友元函數形式重載的語法12/10/202270C++與面向對象程序設計友元函數形式重載的語法12/10/202270C++與面向對字符串的比較12/10/202271C++與面向對象程序設計字符串的比較12/10/202271C++與面向對象程序設計插入符的重載12/10/202272C++與面向對象程序設計插入符的重載12/10/202272C++與面向對象程序設計合乎習慣的重載形式★重載二元運算符時帶兩個參數,較好理解;★書寫簡單:無需類名和二元作用域運算符。12/10/202273C++與面向對象程序設計合乎習慣的重載形式★重載二元運算符時帶兩個參數,較好理解;1兩種形式的選擇時機★左操作數(或者只有左操作數時)是本類的對象(引用)時,必須選用成員函數形式。★左操作數不是本類的對象,必須采用非成員函數的形式,一般是友元函數。★運算符函數不是類的成員函數,但是要訪問類的保護或者私有成員時,也可以采用友元函數形式。12/10/202274C++與面向對象程序設計兩種形式的選擇時機★左操作數(或者只有左操作數時)是本類的對小結1—兩種形式★二元運算符以成員函數的形式重載時,只帶一個參數,以友元函數形式重載時,有兩個參數。★重載(),[],->和任何賦值運算符時,必須采用成員函數形式。12/10/202275C++與面向對象程序設計小結1—兩種形式★二元運算符以成員函數的形式重載時,只帶一個小結2—兩種形式★單目運算符最好被重載為成員函數;★具有可交換性的雙目運算符最好兩種形式都有(成員函數時適用左操作數為本類對象,友元函數時適用左操作數為其他類的對象)。★盡量重用已有的操作和運算符。12/10/202276C++與面向對象程序設計小結2—兩種形式★單目運算符最好被重載為成員函數;12/10流插入符和提取符的重載12/10/202277C++與面向對象程序設計流插入符和提取符的重載12/10/202277C++與面向對12/10/202278C++與面向對象程序設計12/10/202278C++與面向對象程序設計前增量運算符的重載Rationalr(1,2); ++r;12/10/202279C++與面向對象程序設計前增量運算符的重載Rationalr(1,2);12/1后增量運算符的重載Rationalr(-1,5); r++;12/10/202280C++與面向對象程序設計后增量運算符的重載Rationalr(-1,5);12/12/10/202281C++與面向對象程序設計12/10/202281C++與面向對象程序設計前增量與后增量的區別★參數的區別(主要區別) operator++(); operator++(int);Rationalr; ++r;r.operator++(); r++;r.operator++(0);//0偽值,僅僅是為了區別前增量和后增量。12/10/202282C++與面向對象程序設計前增量與后增量的區別★參數的區別(主要區別)12/10/20區別之二★返回值的區別: 前增量:先修改當前對象,再返回之,因而應該返回引用。 后增量:先用臨時對象保存當前對象,再修改當前對象,然后返回臨時對象,因而返回值。12/10/202283C++與面向對象程序設計區別之二★返回值的區別:12/10/202283C++與面向12/10/202284C++與面向對象程序設計12/10/202284C++與面向對象程序設計還有兩個運算符
[]
()12/10/202285C++與面向對象程序設計還有兩個運算符12/10/202285C++與面向對象程序設下標運算符的重載template<classType>Type&Array<Type>::operator[](intindex){ assert(index>=0&&index<nSize); returnpList[index];}Array<int>a(10);A[20]=1;12/10/202286C++與面向對象程序設計下標運算符的重載template<classType>1函數調用運算符()的重載12/10/202287C++與面向對象程序設計函數調用運算符()的重載12/10/202287C++與面向小結——運算符重載的形式12/10/202288C++與面向對象程序設計小結——運算符重載的形式12/10/202288C++與面向小結——值返回與引用返回★引用返回可以成為左值,被賦值、修改或者給其他對象賦值;成員函數引用返回可以連續調用(例如<<和>>)★所有賦值運算符都應該引用返回★前增量應該引用返回12/10/202289C++與面向對象程序設計小結——值返回與引用返回★引用返回可以成為左值,被賦值、修改續上★下標運算符引用返回可以修改返回的值★希望改變當前對象的成員函數可以返回引用(例如+)12/10/202290C++與面向對象程序設計續上★下標運算符引用返回可以修改返回的值12/10/2022小結——關于左值1.變量可以用作左值,也可以用作右值;常量只能用作右值。2.所有的賦值運算表達式都可以用作左值。
3.前增量和前減量可以用作左值,后增量和后減量只能用作右值。4.逗號表達式可以用作左值。
12/10/202291C++與面向對象程序設計小結——關于左值1.變量可以用作左值,也可以用作右值;常量只5.正確返回引用的函數可以成為左值。
返回全局變量的引用;返回局部靜態變量的引用;返回函數參數的引用;返回堆對象的引用。12/10/202292C++與面向對象程序設計5.正確返回引用的函數可以成為左值。12/10/202292返回全局變量的引用12/10/202293C++與面向對象程序設計返回全局變量的引用12/10/202293C++與面向對象程返回局部靜態變量的引用12/10/202294C++與面向對象程序設計返回局部靜態變量的引用12/10/202294C++與面向對返回參數的引用12/10/202295C++與面向對象程序設計返回參數的引用12/10/202295C++與面向對象程序設常用于運算符重載12/10/202296C++與面向對象程序設計常用于運算符重載12/10/202296C++與面向對象程序返回堆對象的引用12/10/202297C++與面向對象程序設計返回堆對象的引用12/10/202297C++與面向對象程序6.正確返回指針的函數也可以成為左值。
返回全局變量的指針;返回局部靜態變量的指針;返回函數參數的指針;返回堆對象的指針。12/10/202298C++與面向對象程序設計6.正確返回指針的函數也可以成為左值。12/10/202297.返回*this的成員函數可以成為左值。12/10/202299C++與面向對象程序設計7.返回*this的成員函數可以成為左值。12/10/202作業12/10/2022100C++與面向對象程序設計作業12/10/2022100C++與面向對象程序設計12/10/2022101C++與面向對象程序設計12/10/2022101C++與面向對象程序設計運算符重載
operatoroverloading張俊2006-11-212/10/2022102C++與面向對象程序設計運算符重載
operatoroverloading張主要內容和教學要求★掌握常用運算符的重載★理解運算符重載的兩種形式12/10/2022103C++與面向對象程序設計主要內容和教學要求★掌握常用運算符的重載12/10/2022為什么要重載運算符★應用系統的運算符集;★為自定義類型提供簡潔的表達式; Complexa,b,c; 不重載運算符: a.Print();c=Add(a,b); 重載運算符:cout<<a;c=a+b;12/10/2022104C++與面向對象程序設計為什么要重載運算符★應用系統的運算符集;12/10/2022運算符重載的實現運算符函數(operatorfunction) Typea,b,c; cin>>a>>b; c=a+b; cout<<c;?????12/10/2022105C++與面向對象程序設計運算符重載的實現運算符函數(operatorfunctio當前對象調用成員函數的對象,對于該成員函數來說即為當前對象。12/10/2022106C++與面向對象程序設計當前對象調用成員函數的對象,對于該成員函數來說即為當前對象。當前對象(左操作數)12/10/2022107C++與面向對象程序設計當前對象(左操作數)12/10/20226C++與面向對象程關于當前對象的作用1.左操作數作為當前對象調用運算符函數;2.左操作數隱含地作為二元運算符的第一個參數;3.用this指針或者直接訪問左操作數的數據成員;4.右操作數作為運算符重載函數的實參;12/10/2022108C++與面向對象程序設計關于當前對象的作用1.左操作數作為當前對象調用運算符函數;1運算符重載的限制★一個中心:不能夠改變運算符的性質 操作數的個數; 優先級; 結合性; 語法結構;12/10/2022109C++與面向對象程序設計運算符重載的限制★一個中心:不能夠改變運算符的性質12/10三個基本點★不能創建新的運算符★不能改變運算符的含義★不能僅僅操作基本數據類型(兩個操作數中必須有一個自定義類型)12/10/2022110C++與面向對象程序設計三個基本點★不能創建新的運算符12/10/20229C++與可以不重載的運算符默認情況下,不需要重載: 賦值運算符:= 地址運算符:&12/10/2022111C++與面向對象程序設計可以不重載的運算符默認情況下,不需要重載:12/10/202不可重載和經常重載的運算符★不允許重載的運算符
.
.*
::
?:
sizeof★經常重載的運算符 算術運算符:+
-
*
/
++
-- 關系運算符:>
>=
<
<=
==
!= 賦值運算符:=
+=
-=
*=
/= I/O運算符:<<
>> 一元運算符:[]
()
!
-12/10/2022112C++與面向對象程序設計不可重載和經常重載的運算符★不允許重載的運算符12/10/2運算符重載的形式★成員函數形式:運算符函數作為類的成員★非成員函數形式:友元外部函數(全局函數)12/10/2022113C++與面向對象程序設計運算符重載的形式★成員函數形式:運算符函數作為類的成員12/Complex類詳解12/10/2022114C++與面向對象程序設計Complex類詳解12/10/202213C++與面向對象數據成員及構造函數12/10/2022115C++與面向對象程序設計數據成員及構造函數12/10/202214C++與面向對象程賦值運算符成員函數原型成員函數定義成員函數調用12/10/2022116C++與面向對象程序設計賦值運算符成員函數原型成員函數定義成員函數調用12/10/2算術運算符的重載成員函數原型思考:為什么只有一個加數?12/10/2022117C++與面向對象程序設計算術運算符的重載成員函數原型思考:為什么只有一個加數?12/加法運算符的實現及調用成員函數定義成員函數調用12/10/2022118C++與面向對象程序設計加法運算符的實現及調用成員函數定義成員函數調用12/10/212/10/2022119C++與面向對象程序設計12/10/202218C++與面向對象程序設計復合運算的運算符成員函數定義成員函數原型12/10/2022120C++與面向對象程序設計復合運算的運算符成員函數定義成員函數原型12/10/2022成員函數定義成員函數調用12/10/2022121C++與面向對象程序設計成員函數定義成員函數調用12/10/202220C++與面向一元運算符的重載成員函數原型成員函數定義成員函數調用12/10/2022122C++與面向對象程序設計一元運算符的重載成員函數原型成員函數定義成員函數調用12/1成員函數形式的特點函數定義:作為類的成員函數。函數參數:二元運算符只帶一個參數,一元運算符不帶參數。函數調用:當前對象作為左操作數,函數參數作為右操作數。a.operator+(b)語法比較晦澀,不易理解12/10/2022123C++與面向對象程序設計成員函數形式的特點函數定義:作為類的成員函數。12/10/2友元函數形式的重載友元函數定義友元函數原型友元函數調用12/10/2022124C++與面向對象程序設計友元函數形式的重載友元函數定義友元函數原型友元函數調用12/友元函數形式的重載12/10/2022125C++與面向對象程序設計友元函數形式的重載12/10/202224C++與面向對象程友元函數形式的特點函數定義:作為類的友元函數函數參數:二元運算符帶兩個參數,一元運算符帶一個參數函數調用:兩個對象都作為函數的參數operator+(a,b);是幾元運算符就帶幾個操作數,語法符合習慣,易懂,但少用。12/10/2022126C++與面向對象程序設計友元函數形式的特點函數定義:作為類的友元函數12/10/20成員函數形式遇到的問題★當運算符的左操作數不是該類的對象時,出現問題。 如 Complexa,b; 重載:operator+(constComplex&r) a=3+b;★3不是Complex的對象,不能調用上述重載的運算符。因而不能計算。12/10/2022127C++與面向對象程序設計成員函數形式遇到的問題★當運算符的左操作數不是該類的對象時,友元函數形式的另一類用法成員函數原型成員函數定義成員函數調用12/10/2022128C++與面向對象程序設計友元函數形式的另一類用法成員函數原型成員函數定義成員函數調用流插入符和提取符的重載cin>>a>>b;cout<<a<<b;運算符的左操作數cout不是Complex類的對象,因此必須采用友元形式的重載。12/10/2022129C++與面向對象程序設計流插入符和提取符的重載cin>>a>>b;12/112/10/2022130C++與面向對象程序設計12/10/202229C++與面向對象程序設計請分析下列運算符重載的形式T為自定義類型,并設下列運算符都有意義。[1]Ta,bc; intx;[2]cin>>a>>b>>c;cout<<a<<b<<c;[3]a=b; [4]c=b+a; c=b–x;[5]c=x+a; c=x–b;12/10/2022131C++與面向對象程序設計請分析下列運算符重載的形式T為自定義類型,并設下列運算符都有String類詳解
自課本P311開始12/10/2022132C++與面向對象程序設計String類詳解
自課本P311開始12/10/2022312/10/2022133C++與面向對象程序設計12/10/202232C++與面向對象程序設計邏輯非運算符友元函數的形式請參考P31312/10/2022134C++與面向對象程序設計邏輯非運算符友元函數的形式請參考P31312/10/2022重載流插入和提取運算符12/10/2022135C++與面向對象程序設計重載流插入和提取運算符12/10/202234C++與面向對流插入符調用分析12/10/2022136C++與面向對象程序設計流插入符調用分析12/10/202235C++與面向對象程序復制構造函數12/10/2022137C++與面向對象程序設計復制構造函數12/10/202236C++與面向對象程序設計賦值運算符12/10/2022138C++與面向對象程序設計賦值運算符12/10/202237C++與面向對象程序設計字符串連接“+、+=”12/10/2022139C++與面向對象程序設計字符串連接“+、+=”12/10/202238C++與面向轉換運算符有什么樣的轉換構造函數,就應該提供什么樣的轉換運算符數據類型轉換★算術運算★賦值★實參傳給形參★返回值12/10/2022140C++與面向對象程序設計轉換運算符有什么樣的轉換構造函數,就應該提供什么樣的轉換運算Rational類詳解12/10/2022141C++與面向對象程序設計Rational類詳解12/10/202240C++與面向對12/10/2022142C++與面向對象程序設計12/10/202241C++與面向對象程序設計求兩個數的最大公約數12/10/2022143C++與面向對象程序設計求兩個數的最大公約數12/10/202242C++與面向對象求兩個數的最小公倍數12/10/2022144C++與面向對象程序設計求兩個數的最小公倍數12/10/202243C++與面向對象對分數進行標準化12/10/2022145C++與面向對象程序設計對分數進行標準化12/10/202244C++與面向對象程序各種構造函數12/10/2022146C++與面向對象程序設計各種構造函數12/10/202245C++與面向對象程序設計復制構造函數12/10/2022147C++與面向對象程序設計復制構造函數12/10/202246C++與面向對象程序設計成員函數形式
的重載12/10/2022148C++與面向對象程序設計成員函數形式
的重載12/10/202247C++與面向對象賦值運算符的重載12/10/2022149C++與面向對象程序設計賦值運算符的重載12/10/202248C++與面向對象程序算術運算符的重載12/10/2022150C++與面向對象程序設計算術運算符的重載12/10/202249C++與面向對象程序12/10/2022151C++與面向對象程序設計12/10/202250C++與面向對象程序設計復合運算符12/10/2022152C++與面向對象程序設計復合運算符12/10/202251C++與面向對象程序設計關系運算符12/10/2022153C++與面向對象程序設計關系運算符12/10/202252C++與面向對象程序設計12/10/2022154C++與面向對象程序設計12/10/202253C++與面向對象程序設計12/10/2022155C++與面向對象程序設計12/10/202254C++與面向對象程序設計12/10/2022156C++與面向對象程序設計12/10/202255C++與面向對象程序設計12/10/2022157C++與面向對象程序設計12/10/202256C++與面向對象程序設計12/10/2022158C++與面向對象程序設計12/10/202257C++與面向對象程序設計12/10/2022159C++與面向對象程序設計12/10/202258C++與面向對象程序設計成員函數形式的特點★運算符重載函數作為類的成員函數。★二元運算符重載函數只帶一個參數,因為另外一個參數隱含為this。operator+(Complex*this,constComplex&);★一元運算符重載函數不帶參數。12/10/2022160C++與面向對象程序設計成員函數形式的特點★運算符重載函數作為類的成員函數。12/1友元函數形式
的重載12/10/2022161C++與面向對象程序設計友元函數形式
的重載12/10/202260C++與面向對象12/10/2022162C++與面向對象程序設計12/10/202261C++與面向對象程序設計12/10/2022163C++與面向對象程序設計12/10/202262C++與面向對象程序設計12/10/2022164C++與面向對象程序設計12/10/202263C++與面向對象程序設計12/10/2022165C++與面向對象程序設計12/10/202264C++與面向對象程序設計12/10/2022166C++與面向對象程序設計12/10/202265C++與面向對象程序設計12/10/2022167C++與面向對象程序設計12/10/202266C++與面向對象程序設計12/10/2022168C++與面向對象程序設計12/10/202267C++與面向對象程序設計請完成其定義12/10/2022169C++與面向對象程序設計請完成其定義12/10/202268C++與面向對象程序設計重載<<和>>12/10/2022170C++與面向對象程序設計重載<<和>>12/10/202269C++與面向對象程序設友元函數形式重載的語法12/10/2022171C++與面向對象程序設計友元函數形式重載的語法12/10/202270C++與面向對字符串的比較12/10/2022172C++與面向對象程序設計字符串的比較12/10/202271C++與面向對象程序設計插入符的重載12/10/2022173C++與面向對象程序設計插入符的重載12/10/202272C++與面向對象程序設計合乎習慣的重載形式★重載二元運算符時帶兩個參數,較好理解;★書寫簡單:無需類名和二元作用域運算符。12/10/2022174C++與面向對象程序設計合乎習慣的重載形式★重載二元運算符時帶兩個參數,較好理解;1兩種形式的選擇時機★左操作數(或者只有左操作數時)是本類的對象(引用)時,必須選用成員函數形式。★左操作數不是本類的對象,必須采用非成員函數的形式,一般是友元函數。★運算符函數不是類的成員函數,但是要訪問類的保護或者私有成員時,也可以采用友元函數形式。12/10/2022175C++與面向對象程序設計兩種形式的選擇時機★左操作數(或者只有左操作數時)是本類的對小結1—兩種形式★二元運算符以成員函數的形式重載時,只帶一個參數,以友元函數形式重載時,有兩個參數。★重載(),[],->和任何賦值運算符時,必須采用成員函數形式。12/10/2022176C++與面向對象程序設計小結1—兩種形式★二元運算符以成員函數的形式重載時,只帶一個小結2—兩種形式★單目運算符最好被重載為成員函數;★具有可交換性的雙目運算符最好兩種形式都有(成員函數時適用左操作數為本類對象,友元函數時適用左操作數為其他類的對象)。★盡量重用已有的操作和運算符。12/10/2022177C++與面向對象程序設計小結2—兩種形式★單目運算符最好被重載為成員函數;12/10流插入符和提取符的重載12/10/2022178C++與面向對象程序設計流插入符和提取符的重載12/10/202277C++與面向對12/10/2022179C++與面向對象程序設計12/10/202278C++與面向對象程序設計前增量運算符的重載Rationalr(1,2); ++r;12/10/2022180C++與面向對象程序設計前增量運算符的重載Rationalr(1,2);12/1后增量運算符的重載Rationalr(-1,5); r++;12/10/2022181C++與面向對象程序設計后增量運算符的重載Rationalr(-1,5);12/12/10/2022182C++與面向對象程序設計12/10/202281C++與面向對象程序設計前增量與后增量的區別★參數的區別(主要區別) operator++(); operator++(int);Rationalr; ++r;r.operator++(); r++;r.operator++(0);//0偽值,僅僅是為了區別前增量和后增量。12/10/2022183C++與面向對象程序設計前增量與后增量的區別★參
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 分期購物付款合同樣本
- 醫療器械采購合同范例
- 主板維修培訓合同范例
- 醫院停車協議合同樣本
- 化學用品合同標準文本
- 勞動意向合同標準文本
- 出租布置物件合同樣本
- 勞動合同范例 續訂
- 醫藥冷庫安裝租賃合同范例
- 冷棚安裝合同樣本
- 煤礦隱蔽致災因素普查課件
- 項目七-質譜法及其在食品分析中的應用001課件
- 《預防未成年人犯罪》主題班會
- 建設項目安全設施“三同時”審批流程圖
- 軟件系統功能需求調研表(信息系統項目需求調研表)
- 中國電信LTE網絡質量評估測試規范(試行稿)V1
- 藍牙音響成品檢驗規范
- 材料5:個人征信系統機構接入和接口驗收工作流程
- 項目選址比選方案分析參考范本
- 中機2015~2016年消防系統維保養護年度總結報告
- 預制混凝土襯砌管片生產工藝技術規程doc
評論
0/150
提交評論