




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第6章 運(yùn)算符重載6.3 運(yùn)算符重載的實(shí)現(xiàn)運(yùn)算符重載的實(shí)現(xiàn)6.2 運(yùn)算符重載的規(guī)則運(yùn)算符重載的規(guī)則6.1 運(yùn)算符重載概述運(yùn)算符重載概述6.4 常用運(yùn)算符的重載常用運(yùn)算符的重載(1 1)編譯時(shí)的多態(tài)性(靜態(tài)多態(tài))編譯時(shí)的多態(tài)性(靜態(tài)多態(tài)) 靜態(tài)聯(lián)編(綁定)支持靜態(tài)聯(lián)編(綁定)支持通過函數(shù)的重載和運(yùn)算符的重載、模板來(lái)實(shí)現(xiàn)的。通過函數(shù)的重載和運(yùn)算符的重載、模板來(lái)實(shí)現(xiàn)的。(2 2)運(yùn)行時(shí)的多態(tài)性)運(yùn)行時(shí)的多態(tài)性( (動(dòng)態(tài)多態(tài))動(dòng)態(tài)多態(tài)) 動(dòng)態(tài)聯(lián)編(綁定動(dòng)態(tài)聯(lián)編(綁定) ) 支持支持在程序執(zhí)行過程中動(dòng)態(tài)地確定,通過類繼承關(guān)系和虛函數(shù)在程序執(zhí)行過程中動(dòng)態(tài)地確定,通過類繼承關(guān)系和虛函數(shù)實(shí)現(xiàn)。實(shí)現(xiàn)。聯(lián)編是指一
2、個(gè)程序模塊、代碼之間互相關(guān)聯(lián)的過程。聯(lián)編是指一個(gè)程序模塊、代碼之間互相關(guān)聯(lián)的過程。 運(yùn)算符重載使得用戶自定義的數(shù)據(jù)以一種更簡(jiǎn)潔的方式工作運(yùn)算符重載使得用戶自定義的數(shù)據(jù)以一種更簡(jiǎn)潔的方式工作例如例如int x , y ;y = x + y ; matrix m1 , m2 ,m;/ 矩陣類對(duì)象矩陣類對(duì)象m = Madd ( m1 , m2 ) ;/ 調(diào)用函數(shù)計(jì)算兩個(gè)矩陣的和調(diào)用函數(shù)計(jì)算兩個(gè)矩陣的和complex c1 , c2 ,c; / 復(fù)數(shù)類對(duì)象復(fù)數(shù)類對(duì)象c = Cadd (c1 , c2 ) ;/ 調(diào)用函數(shù)計(jì)算兩個(gè)復(fù)數(shù)的和調(diào)用函數(shù)計(jì)算兩個(gè)復(fù)數(shù)的和能表示為能表示為c= c1 + c2 ; ?
3、能表示為能表示為m = m1 + m2 ; ?6.1 運(yùn)算符重載概述定義定義運(yùn)算符重載函數(shù)運(yùn)算符重載函數(shù) 運(yùn)算符重載的實(shí)質(zhì)運(yùn)算符重載的實(shí)質(zhì)class Complexclass Complex public:public: double real, imag; double real, imag; Complex(double r = 0, double i = 0): real(r), imag(i) Complex(double r = 0, double i = 0): real(r), imag(i) void Show(); void Show(); ;Complex operator
4、 +(Complex com1, Complex com2) Complex operator +(Complex com1, Complex com2) / /重載重載”+”+”相當(dāng)于相當(dāng)于 Add() Add()Complex temp;Complex temp; temp.real=com1.real+com2.real; temp.real=com1.real+com2.real; temp.imag=com1.imag+com2.imag; temp.imag=com1.imag+com2.imag; return temp; return temp; int main()int m
5、ain() Complex com1(1.1,2.2),com2(3.3,4.4),total1,total2; Complex com1(1.1,2.2),com2(3.3,4.4),total1,total2; total1=total1= operator+operator+ (com1,com2);(com1,com2); / /相當(dāng)于相當(dāng)于 調(diào)用調(diào)用 Add() Add() total1.Show(); total1.Show(); total2=total2= com1+com2com1+com2; ; / /相當(dāng)于:相當(dāng)于: operator+ operator+ (com1,c
6、om2)(com1,com2) total2.Show(); total2.Show(); return 0; return 0; 運(yùn)算符函數(shù)運(yùn)算符函數(shù)operator+一般函數(shù)一般函數(shù)Add()1 1)把傳統(tǒng)的運(yùn)算符用于用戶自定義的對(duì)象)把傳統(tǒng)的運(yùn)算符用于用戶自定義的對(duì)象2 2)直觀自然,可以提高程序的可讀性)直觀自然,可以提高程序的可讀性3 3)體現(xiàn)了)體現(xiàn)了C+C+的可擴(kuò)充性的可擴(kuò)充性4 4)類似于函數(shù)重載,定義運(yùn)算符重載函數(shù):)類似于函數(shù)重載,定義運(yùn)算符重載函數(shù): operator operator ()6.2 6.2 運(yùn)算符重載的規(guī)則運(yùn)算符重載的規(guī)則5 5) 不能被重載的運(yùn)算符不能被
7、重載的運(yùn)算符 運(yùn)算符運(yùn)算符運(yùn)算符名稱運(yùn)算符名稱禁止重載的理由禁止重載的理由? :三目條件運(yùn)算符三目條件運(yùn)算符C+中沒有定義三目運(yùn)算符的語(yǔ)法中沒有定義三目運(yùn)算符的語(yǔ)法. . *成員操作符成員操作符成員指針訪問成員指針訪問為保證成員操作符對(duì)成員訪問的安全性為保證成員操作符對(duì)成員訪問的安全性:作用域操作符作用域操作符該操作符右操作數(shù)不是表達(dá)式該操作符右操作數(shù)不是表達(dá)式sizeof類型字長(zhǎng)操作符類型字長(zhǎng)操作符該操作符的操作數(shù)為類型名,不是表達(dá)式該操作符的操作數(shù)為類型名,不是表達(dá)式6) 重載運(yùn)算符函數(shù)可以對(duì)運(yùn)算符作出新的解釋,但原有基本語(yǔ)義不變:重載運(yùn)算符函數(shù)可以對(duì)運(yùn)算符作出新的解釋,但原有基本語(yǔ)義不變
8、:不改變運(yùn)算符的優(yōu)先級(jí)不改變運(yùn)算符的優(yōu)先級(jí)不改變運(yùn)算符的結(jié)合性不改變運(yùn)算符的結(jié)合性不改變運(yùn)算符所需要的操作數(shù)不改變運(yùn)算符所需要的操作數(shù) 不能創(chuàng)建新的運(yùn)算符不能創(chuàng)建新的運(yùn)算符7) 運(yùn)算符重載函數(shù)的參數(shù)至少應(yīng)有一個(gè)是類對(duì)象或引用運(yùn)算符重載函數(shù)的參數(shù)至少應(yīng)有一個(gè)是類對(duì)象或引用8)用于類對(duì)象的運(yùn)算符必須重載,只有)用于類對(duì)象的運(yùn)算符必須重載,只有“=“可以不重載,可以不重載,但只能實(shí)現(xiàn)淺復(fù)制。但只能實(shí)現(xiàn)淺復(fù)制。函數(shù)名函數(shù)名 運(yùn)算符函數(shù)是一種特殊的成員函數(shù)或友員函數(shù)運(yùn)算符函數(shù)是一種特殊的成員函數(shù)或友員函數(shù) (普通函數(shù)的用法普通函數(shù)的用法 ?)?) 成員函數(shù)的語(yǔ)法形式為:成員函數(shù)的語(yǔ)法形式為:類型類型 類
9、名類名 : ( 參數(shù)表參數(shù)表 ) / 相對(duì)于該類定義的操作相對(duì)于該類定義的操作6.3.1 6.3.1 運(yùn)算符重載的語(yǔ)法形式運(yùn)算符重載的語(yǔ)法形式 一個(gè)一個(gè)運(yùn)算符被重載后,原有意義沒有失去,只是定義了相對(duì)運(yùn)算符被重載后,原有意義沒有失去,只是定義了相對(duì)一特定類的一個(gè)運(yùn)算符一特定類的一個(gè)運(yùn)算符6.3 運(yùn)算符重載的實(shí)現(xiàn)友元函數(shù)的語(yǔ)法形式:友元函數(shù)的語(yǔ)法形式: friend 類型類型 ( 參數(shù)表參數(shù)表 ) / 相對(duì)于該類定義的操作相對(duì)于該類定義的操作友元函數(shù)的參數(shù)與運(yùn)算數(shù)個(gè)數(shù)相同,成員函數(shù)的參數(shù)要少一個(gè)。友元函數(shù)的參數(shù)與運(yùn)算數(shù)個(gè)數(shù)相同,成員函數(shù)的參數(shù)要少一個(gè)。賦值運(yùn)算符賦值運(yùn)算符 =需要重載時(shí)只能重載為
10、成員函數(shù),且不能繼承。需要重載時(shí)只能重載為成員函數(shù),且不能繼承。 運(yùn)算符函數(shù)可以重載為成員函數(shù)或友員函數(shù)運(yùn)算符函數(shù)可以重載為成員函數(shù)或友員函數(shù) 關(guān)鍵區(qū)別在于成員函數(shù)具有關(guān)鍵區(qū)別在于成員函數(shù)具有 this 指針,友員函數(shù)沒有指針,友員函數(shù)沒有this指針指針 不管是成員函數(shù)還是友員函數(shù)重載,算符的使用方法相同。但不管是成員函數(shù)還是友員函數(shù)重載,算符的使用方法相同。但 傳遞參數(shù)的方法不同,實(shí)現(xiàn)代碼不同,應(yīng)用場(chǎng)合也不同傳遞參數(shù)的方法不同,實(shí)現(xiàn)代碼不同,應(yīng)用場(chǎng)合也不同 *用成員或友員函數(shù)重載運(yùn)算符的不同重載為友員函數(shù),解釋為:重載為友員函數(shù),解釋為:operator op ( ObjectL, Obj
11、ectR ) 左右操作數(shù)都由參數(shù)傳遞左右操作數(shù)都由參數(shù)傳遞重載為成員函數(shù),解釋為:重載為成員函數(shù),解釋為:ObjectL . operator op ( ObjectR )左操作數(shù)由左操作數(shù)由ObjectL通過通過this指針傳遞,右操作數(shù)由參數(shù)指針傳遞,右操作數(shù)由參數(shù)ObjectR傳遞傳遞 6.3.2 重載雙目運(yùn)算符 二元運(yùn)算符二元運(yùn)算符ObjectL op ObjectR/ /定義友元運(yùn)算符重載函數(shù)定義友元運(yùn)算符重載函數(shù)class Complexclass Complex double real, imag; double real, imag;public:public: Complex
12、( double r =0, double i =0 ) real = r ; imag = i ; Complex( double r =0, double i =0 ) real = r ; imag = i ; friend Complex operator+ ( const Complex & c1, const Complex & c2 ) ; friend Complex operator+ ( const Complex & c1, const Complex & c2 ) ; /friend Complex operator- ( const C
13、omplex & c1, const Complex & c2 ) ; /friend Complex operator- ( const Complex & c1, const Complex & c2 ) ; ;Complex operator + ( const Complex & c1, const Complex & c2 )Complex operator + ( const Complex & c1, const Complex & c2 ) double r = c1.real + c2.real ; double
14、 r = c1.real + c2.real ; double i = c1.imag + c2.imag; double i = c1.imag + c2.imag; return Complex ( r, i ) ; return Complex ( r, i ) ; int main()int main() Complex c1( 5,-2 ), c2( 4,-3 ) ; Complex c1( 5,-2 ), c2( 4,-3 ) ; Complex c ; Complex c ; c = c1 + c2 ; c = c1 + c2 ;/ operator+(c1,c2)/ opera
15、tor+(c1,c2) c = c1 - c2 ; c = c1 - c2 ;/ operator-(c1,c2)/ operator-(c1,c2) 6.2.2 用友員函數(shù)重載算符Complex operator - ( const Complex & c1, const Complex & c2 )Complex operator - ( const Complex & c1, const Complex & c2 ) double r = c1.real - c2.real ; double r = c1.real - c2.real ; double i
16、 = c1.imag - c2.imag; double i = c1.imag - c2.imag; return Complex ( r, i ) ; return Complex ( r, i ) ; / /建立臨時(shí)對(duì)象建立臨時(shí)對(duì)象 實(shí)現(xiàn)復(fù)數(shù)運(yùn)算實(shí)現(xiàn)復(fù)數(shù)運(yùn)算: :算術(shù)運(yùn)算、關(guān)系運(yùn)算算術(shù)運(yùn)算、關(guān)系運(yùn)算/ / 定義成員運(yùn)算符重載函數(shù)定義成員運(yùn)算符重載函數(shù) class Complexclass Complex double real, imag;double real, imag;public:public:Complex(double r = 0, double i = 0): real(r
17、), imag(i)Complex(double r = 0, double i = 0): real(r), imag(i)Complex operator +(Complex &); Complex operator +(Complex &); / /重載重載”+”+” Complex operator + (double d); Complex operator + (double d); / /重載重載”+”+”/Complex operator (Complex &);/Complex operator (Complex &); / /重載減法運(yùn)算符重
18、載減法運(yùn)算符”-”-” /Complex operator ( /Complex operator ( ); ); / /重載求負(fù)運(yùn)算符重載求負(fù)運(yùn)算符”-”-”; ;實(shí)現(xiàn)復(fù)數(shù)運(yùn)算實(shí)現(xiàn)復(fù)數(shù)運(yùn)算: :算術(shù)運(yùn)算、關(guān)系運(yùn)算算術(shù)運(yùn)算、關(guān)系運(yùn)算Complex Complex:operator + (Complex &c)Complex Complex:operator + (Complex &c) Complex temp;Complex temp;temp.real = real+c.real;temp.real = real+c.real;temp.imag = imag+c.imag
19、;temp.imag = imag+c.imag;return temp;return temp; int main()Complex c1(3,4) , c2(5,6) ,c3;c1.Show(); c2.Show();c3 = c1+c2; /c3=c1.operator+(c2);c3.Show();c3 = c3+6.5; /c3=c3.operator+(6.5);c3.Show();return 0;Complex Complex:operator + (double d) Complex temp; temp.real = real+d; temp.imag = imag; re
20、turn temp;擴(kuò)充:擴(kuò)充:重載關(guān)系運(yùn)算符重載關(guān)系運(yùn)算符 =: =: 比較兩個(gè)復(fù)數(shù)是否相等比較兩個(gè)復(fù)數(shù)是否相等. .返回值為返回值為boolbool類型的類型的truetrue或或falsefalse值。值。課后練習(xí):重載關(guān)系運(yùn)算符課后練習(xí):重載關(guān)系運(yùn)算符 str2) coutstr1.disp()“是最大是最大”; else if(str1str2) coutstr2.disp()“是最大是最大”; else if(str1=str2) cout”相等相等”;重載為成員函數(shù),解釋為:重載為成員函數(shù),解釋為:Object . operator op ()操作數(shù)由對(duì)象操作數(shù)由對(duì)象Object
21、通過通過this指針隱含傳遞指針隱含傳遞重載為友員函數(shù),解釋為:重載為友員函數(shù),解釋為:operator op (Object) 操作數(shù)由參數(shù)表的參數(shù)操作數(shù)由參數(shù)表的參數(shù)Object提供提供 6.2.3 重載單目運(yùn)算符 一元運(yùn)算符一元運(yùn)算符Object op 或 op Object重載重載 + 與與 - 設(shè)A Aobject ;運(yùn)算符 +和 - - 有兩種方式:1、前置方式:、前置方式: +Aobject -Aobject2、后置方式:、后置方式: Aobject + Aobject -一元 成員函數(shù)成員函數(shù) 重載A A : operator+ () ; 解釋為:Aobject . opera
22、tor +( ) ; 友員函數(shù)友員函數(shù) 重載friend A operator+ (A &) ; 解釋為: operator +( Aobject ) ;二元 成員函數(shù)成員函數(shù) 重載A A : operator+ (int) ; 解釋為: Aobject . operator +( 0 ) ; 友員函數(shù)友員函數(shù) 重載:friend A operator+ (A &, int) ; 解釋為: operator+(Aobject, 0) 偽參數(shù)偽參數(shù)*6.3.1 重載+與-例例 6-4 分析并擴(kuò)充功能分析并擴(kuò)充功能 例:重載運(yùn)算符例:重載運(yùn)算符”+”、“-”以適應(yīng)對(duì)復(fù)數(shù)運(yùn)算的要求以
23、適應(yīng)對(duì)復(fù)數(shù)運(yùn)算的要求/ 定義成員運(yùn)算符重載函數(shù)定義成員運(yùn)算符重載函數(shù) class Complexdouble real, imag;public:Complex(double r = 0, double i = 0): real(r), imag(i) Complex operator + ( ); /重載前置重載前置”+” Complex operator + (int ); /重載后置重載后置”+” Complex operator -( ); Complex operator -(int );6.4.1 6.4.1 重載賦值運(yùn)算符重載賦值運(yùn)算符 賦值運(yùn)算符重載用于對(duì)象數(shù)據(jù)的復(fù)制 oper
24、ator= 必須重載為成員函數(shù) 重載函數(shù)原型為:類型類型 & 類名類名 : operator= ( const 類名類名 & ) ; 6.4 6.4 其它運(yùn)算符的重載其它運(yùn)算符的重載class STRINGclass STRING public : public : STRING( char STRING( char * *s ) s ) / /構(gòu)造函數(shù)構(gòu)造函數(shù) cout“Constructor called.”endl; cout“Constructor called.”endl; ptr=new charstrlen(s)+1; ptr=new charstrlen(s)+
25、1; strcpy(ptr,s); strcpy(ptr,s); STRING() STRING() cout“Destructor called.-”ptrendl; cout“Destructor called.-”ptrendl; delete ptr; delete ptr; private:private: char char * *ptr ;ptr ; ; ;int main()int main() STRING p1(“book”) ; STRING p1(“book”) ; STRING p2(“jeep”) ; STRING p2(“jeep”) ; p2 = p1 ; p2
26、 = p1 ; / / 調(diào)用調(diào)用默默認(rèn)賦值運(yùn)算符函數(shù)認(rèn)賦值運(yùn)算符函數(shù) return 0;return 0; 定義定義STRING類的重載賦值函數(shù)類的重載賦值函數(shù) / / 重載賦值運(yùn)算符,實(shí)現(xiàn)深復(fù)制重載賦值運(yùn)算符,實(shí)現(xiàn)深復(fù)制STRING &operator= (const STRING &s)STRING &operator= (const STRING &s) if (this=&s) return if (this=&s) return * *this;this; delete ptr; delete ptr; ptr=new charstrl
27、en(s.ptr)+1; ptr=new charstrlen(s.ptr)+1; strcpy(ptr,s.ptr); strcpy(ptr,s.ptr); return return * *this;this; 注意:*STRING p3(p1) ; / 調(diào)用復(fù)制構(gòu)造函數(shù)調(diào)用復(fù)制構(gòu)造函數(shù) *p3 = p2 = p1; /連續(xù)賦值,返回類類型連續(xù)賦值,返回類類型 例:例:x=y=1;*只能重載為成員函數(shù),避免只能重載為成員函數(shù),避免: “book” = p1;6.4.2 6.4.2 重載運(yùn)算符重載運(yùn)算符和和()() 運(yùn)算符運(yùn)算符 和和 () 是二元運(yùn)算符是二元運(yùn)算符 和和 () 只能用成員函
28、數(shù)重載,不能用友元函數(shù)重載只能用成員函數(shù)重載,不能用友元函數(shù)重載 1 1重載下標(biāo)算符重載下標(biāo)算符 重載格式重載格式類類 : 類型類型 operator ( 類型類型 ) ; 運(yùn)算符用于訪問數(shù)據(jù)對(duì)象的元素運(yùn)算符用于訪問數(shù)據(jù)對(duì)象的元素*6.3.3 重載運(yùn)算符和()1 1重載下標(biāo)算符重載下標(biāo)算符 重載格式重載格式類類 : 類型類型 operator ( 類型類型 ) ; 運(yùn)算符用于訪問數(shù)據(jù)對(duì)象的元素運(yùn)算符用于訪問數(shù)據(jù)對(duì)象的元素右操作數(shù)右操作數(shù)為符合原語(yǔ)義,用為符合原語(yǔ)義,用 int*6.3.3 重載運(yùn)算符和()1 1重載下標(biāo)算符重載下標(biāo)算符 重載格式重載格式類類 : 類型類型 operator()
29、類型類型 ; 運(yùn)算符用于訪問數(shù)據(jù)對(duì)象的元素運(yùn)算符用于訪問數(shù)據(jù)對(duì)象的元素例例 設(shè)設(shè) x 是類是類 X 的一個(gè)對(duì)象,則表達(dá)式的一個(gè)對(duì)象,則表達(dá)式x y 可被解釋為可被解釋為顯式聲明顯式聲明一個(gè)參數(shù)一個(gè)參數(shù)*6.3.3 重載運(yùn)算符和()1 1重載下標(biāo)算符重載下標(biāo)算符 class vectorclass vector public : public : vector ( int n ) v = new int n ; size = n ; vector ( int n ) v = new int n ; size = n ; vector ( ) delete v ; size = 0 ; vecto
30、r ( ) delete v ; size = 0 ; int & operator ( int i ) return v i ; int & operator ( int i ) return v i ; private : private : int int * * v ; int size ; v ; int size ; ;int main ( )int main ( ) vector a ( 5 ) ; vector a ( 5 ) ; a 2 = 5 ; a 2 = 5 ; cout a 2 endl ; cout a 2 endl ; *6.3.3 重載運(yùn)算符和(
31、)1 1重載下標(biāo)算符重載下標(biāo)算符 / / 例例6-76-7class vectorclass vector public : public : vector ( int n ) v = new int n ; size = n ; vector ( int n ) v = new int n ; size = n ; vector ( ) delete v ; size = 0 ; vector ( ) delete v ; size = 0 ; int & operator ( int i ) return v i ; /int & operator ( int i ) re
32、turn v i ; /增加數(shù)組下標(biāo)越界處理增加數(shù)組下標(biāo)越界處理 private : private : int int * * v ; int size ; v ; int size ; ;void main ( )void main ( ) vector vector a a ( 5 ) ;( 5 ) ; a 2 = 5 ; a 2 = 5 ; cout a 2 endl ; cout a 2 vi*6.3.3 重載運(yùn)算符和() if(i=0)&i=0)&isize) return vi; return vi; cout“The subscript ” cout“The s
33、ubscript ” i“is outsides!n”; i“is outsides!n”; exit(0); exit(0); 2 2重載函數(shù)調(diào)用符重載函數(shù)調(diào)用符 ()() 重載格式類 : 類型 operator() ( 表達(dá)式表 ) ;() 運(yùn)算符用于函數(shù)調(diào)用例例 設(shè) x 是類 X 的一個(gè)對(duì)象,則表達(dá)式x ( arg1, arg2 )可被解釋為x . operator () (arg1, arg2 )*6.3.3 重載運(yùn)算符和()2 2重載函數(shù)調(diào)用符重載函數(shù)調(diào)用符 ()() /用重載用重載()()算符實(shí)現(xiàn)數(shù)學(xué)函數(shù)的抽象算符實(shí)現(xiàn)數(shù)學(xué)函數(shù)的抽象#include class F public :
34、 double operator ( ) ( double x , double y ) ; ;double F : operator ( ) ( double x , double y ) return x * x + y * y ; void main ( ) F f ; cout f ( 5.2 , 2.5 ) endl ;*6.3.3 重載運(yùn)算符和()2 2重載函數(shù)調(diào)用符重載函數(shù)調(diào)用符 ()() /例例6-8 6-8 用重載用重載()()算符實(shí)現(xiàn)數(shù)學(xué)函數(shù)的抽象算符實(shí)現(xiàn)數(shù)學(xué)函數(shù)的抽象#include class F public : double operator ( ) ( doubl
35、e x , double y ) ; ;double F : operator ( ) ( double x , double y ) return x * x + y * y ; void main ( ) F f ; cout f ( 5.2 , 2.5 ) endl ;f . operator() (5.2, 2.5)*6.3.3 重載運(yùn)算符和()istream 和 ostream 是 C+ 的預(yù)定義流類cin 是 istream 的對(duì)象,cout 是 ostream 的對(duì)象運(yùn)算符 由 istream 重載為提取操作,用于輸入基本類型數(shù)據(jù)程序員重載 ,用于輸出和輸入用戶自定義的數(shù)據(jù)類型
36、預(yù)習(xí):第預(yù)習(xí):第8 8章章 重載流插入和流提取運(yùn)算符重載流插入和流提取運(yùn)算符 #include#includeclass vector public : vector( int size =1 ) ; vector() ; int & operator ( int i ) ; friend ostream & operator ( istream & input, vector & ) ; private : int * v ; int len ;void main() int k ; cout k ; vector A( k ) ; cout A ; cout
37、 Output the elements of vector A :n ; cout A ;為為vector類重載流插入運(yùn)算符和提取運(yùn)算符類重載流插入運(yùn)算符和提取運(yùn)算符 *6.3.4 重載流插入和流提取運(yùn)算符#include#includeclass vector public : vector( int size =1 ) ; vector() ; int & operator ( int i ) ; friend ostream & operator ( istream & input, vector & ) ; private : int * v ; in
38、t len ;void main() int k ; cout k ; vector A( k ) ; cout A ; cout Output the elements of vector A :n ; cout A ;重載幾個(gè)運(yùn)算符重載幾個(gè)運(yùn)算符*6.3.4 重載流插入和流提取運(yùn)算符#include#includeclass vector public : vector( int size =1 ) ; vector() ; int & operator ( int i ) ; friend ostream & operator ( istream & input,
39、 vector & ) ; private : int * v ; int len ;void main() int k ; cout k ; vector A( k ) ; cout A ; cout Output the elements of vector A :n ; cout A ;標(biāo)準(zhǔn)流類標(biāo)準(zhǔn)流類*6.3.4 重載流插入和流提取運(yùn)算符#include#includeclass vector public : vector( int size =1 ) ; vector() ; int & operator ( int i ) ; friend ostream &am
40、p; operator ( istream & input, vector & ) ; private : int * v ; int len ;void main() int k ; cout k ; vector A( k ) ; cout A ; cout Output the elements of vector A :n ; cout A ;使用預(yù)定義版本使用預(yù)定義版本*6.3.4 重載流插入和流提取運(yùn)算符#include#includeclass vector public : vector( int size =1 ) ; vector() ; int &
41、 operator ( int i ) ; friend ostream & operator ( istream & input, vector & ) ; private : int * v ; int len ;void main() int k ; cout k ; vector A( k ) ; cout A ; cout Output the elements of vector A :n ; cout (A)*6.3.4 重載流插入和流提取運(yùn)算符#include#includeclass vector public : vector( int size =
42、1 ) ; vector() ; int & operator ( int i ) ; friend ostream & operator ( istream & input, vector & ) ; private : int * v ; int len ;void main() int k ; cout k ; vector A( k ) ; cout A ; cout Output the elements of vector A :n ; cout A ;使用重載版本使用重載版本cout . operator (A)*6.3.4 重載流插入和流提取運(yùn)算
43、符vector:vector( int size ) if (size 100 ) cout The size of size =0 & i len ) return v i ; cout The subscript i is outside !n ; abort() ;ostream & operator ( ostream & output, vector & ary ) for(int i = 0 ; i ary.len ; i + ) output ary i ; output ( istream & input, vector & ar
44、y ) for( int i = 0 ; i ary i ; return input ;*6.3.4 重載流插入和流提取運(yùn)算符vector:vector( int size ) if (size 100 ) cout The size of size =0 & i len ) return v i ; cout The subscript i is outside !n ; abort() ;ostream & operator ( ostream & output, vector & ary ) for(int i = 0 ; i ary.len ; i + ) output ary i ; output ( istream & input, vector & ary ) for( int i = 0 ; i ary i ; return input ;使用重載版本使用重載版本訪問對(duì)象元素訪問對(duì)象元素*6.3.4 重載流插入和流提取運(yùn)算符vector:vector
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 績(jī)效管理和激勵(lì)計(jì)劃
- 班級(jí)自主管理的實(shí)施案例研究計(jì)劃
- 2025年中國(guó)消毒滅菌設(shè)備行業(yè)市場(chǎng)運(yùn)行態(tài)勢(shì)、進(jìn)出口貿(mào)易及發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告
- 企業(yè)戰(zhàn)略規(guī)劃與執(zhí)行結(jié)構(gòu)優(yōu)化方案
- 電子支付系統(tǒng)安全測(cè)試的要點(diǎn)
- 2025年農(nóng)林牧漁專用儀器儀表項(xiàng)目建議書
- 2025年NOX、NO2自動(dòng)采樣器及測(cè)定儀合作協(xié)議書
- 新產(chǎn)品使用指南及功能介紹
- 物理治療課件
- 80天環(huán)游地球知識(shí)競(jìng)賽
- 無(wú)人機(jī)駕駛員航空知識(shí)手冊(cè)培訓(xùn)教材(多旋翼)
- 走近綜合實(shí)踐活動(dòng)課程課件
- 《簡(jiǎn)易方程》集體備課
- (完整文本版)小學(xué)英語(yǔ)音標(biāo)測(cè)試100題
- 醫(yī)院電梯安全操作培訓(xùn)記錄
- 《統(tǒng)計(jì)分析與SPSS的應(yīng)用(第7版)》課件全套 第1-12章 SPSS統(tǒng)計(jì)分析軟件概述
- 黑龍江省哈爾濱市2022-2023學(xué)年八年級(jí)上學(xué)期期末數(shù)學(xué)試題(含答案)
- 建筑施工安全管理及揚(yáng)塵治理檢查投標(biāo)方案(技術(shù)方案)
- 《小學(xué)生數(shù)學(xué)提問能力培養(yǎng)策略研究國(guó)內(nèi)外文獻(xiàn)綜述》3600字
- 中專數(shù)學(xué)(基礎(chǔ)模塊)上冊(cè)課件
- 智慧農(nóng)業(yè)整體解決方案
評(píng)論
0/150
提交評(píng)論