欢迎来到天天文库
浏览记录
ID:44195398
大小:117.00 KB
页数:12页
时间:2019-10-19
《C++的多面性(Overloading)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、使一個算符或函式具有處理多種資料型別能力的方法稱為複載(Overloading)C++中對複載的意義為:讓同一種名稱或用法具有多種意義當我們定義多個具有相同名稱,但卻有不同參數個數或相同參數個數但參數型別不同時,這就稱為函式的複載函式及運算子的多面性(Overloading)函式的複載(Overloading)intmax(inta,intb){….}charmax(chara,charb){….}longmax(longa,longb){….}inti=max(2,4);charc=max(‘a’,’b’);lo
2、ngl=max(23L,56L);函式傳回值的型別以及函式的參數名稱不可作為複載函式的識別之用intprint();longprint();//errorintprint(inta);intprint(intb);//errorTypedefcharflag;print(char);print(flag);//error不同的scope各有其獨自的overloading空間Func1(){intmax(inta,intb);….}Func2(){intmax(chara,charb);….}由於typedef並不會
3、定義出新的型別(只是製造出一別名而已),因此,用typedef所定義出的型別仍以其原始型別為複載之依據//Overloading使用範例#includevoidrepchar();voidrepchar(char0;voidrepchar(char,int);voidmain(){repchar();repchar(‘=‘);repchar(‘+’,30);}voidrepchar(){for(intj=0;j<45;j++)cout<<‘*’;cout<4、(charch){for(intj=0;j<45;j++)cout<#include#include//forexit(1)constintMax=100;classStack{prot5、ected:intst[Max];inttop;public:Stack(){top=0;}voidPush(intvar){st[++top]=var;}intPop(){returnst[top--];}};classStack2:publicStack{public:voidPush(intvar){if(top0)returnStack::Pop(6、);else{cout<<"Error:stackisempty";exit(1);}}};voidmain(){clrscr();Stack2s2;s2.Push(11);s2.Push(22);s2.Push(33);cout<7、與C相同,提供算術運算子(+,-,*,/,++,--…)及關係運算子(>,>=..)以及算術指定運算子(+=,*=,…)能對基本資料型態如int,float,long等執行運算如:inta=b+c;leage+=le;對使用者自行定義較複雜的資料型態如結構或類別,就不能拿這些運算子直接作運算,例如,不能直接將兩個屬於room的類別變數作相加來當作其成員變數相加,必須另外透過成員函數進行運算....Classroom{private:floatledge,sedge;public:…voidaddsquare(roo8、mr1,roomr2)}r1,r2,r3;...voidroom::addsquare(roomr1,roomr2){ledge=r1.ledge+r2.ledge;sedge=r1.sedge+r2.sedge;}…voidmain(){...r3.addsuare(r1,r2);r3=r1+r2;//error}C++提供運算子的複載(多元定義opera
4、(charch){for(intj=0;j<45;j++)cout<#include#include//forexit(1)constintMax=100;classStack{prot
5、ected:intst[Max];inttop;public:Stack(){top=0;}voidPush(intvar){st[++top]=var;}intPop(){returnst[top--];}};classStack2:publicStack{public:voidPush(intvar){if(top0)returnStack::Pop(
6、);else{cout<<"Error:stackisempty";exit(1);}}};voidmain(){clrscr();Stack2s2;s2.Push(11);s2.Push(22);s2.Push(33);cout<7、與C相同,提供算術運算子(+,-,*,/,++,--…)及關係運算子(>,>=..)以及算術指定運算子(+=,*=,…)能對基本資料型態如int,float,long等執行運算如:inta=b+c;leage+=le;對使用者自行定義較複雜的資料型態如結構或類別,就不能拿這些運算子直接作運算,例如,不能直接將兩個屬於room的類別變數作相加來當作其成員變數相加,必須另外透過成員函數進行運算....Classroom{private:floatledge,sedge;public:…voidaddsquare(roo8、mr1,roomr2)}r1,r2,r3;...voidroom::addsquare(roomr1,roomr2){ledge=r1.ledge+r2.ledge;sedge=r1.sedge+r2.sedge;}…voidmain(){...r3.addsuare(r1,r2);r3=r1+r2;//error}C++提供運算子的複載(多元定義opera
7、與C相同,提供算術運算子(+,-,*,/,++,--…)及關係運算子(>,>=..)以及算術指定運算子(+=,*=,…)能對基本資料型態如int,float,long等執行運算如:inta=b+c;leage+=le;對使用者自行定義較複雜的資料型態如結構或類別,就不能拿這些運算子直接作運算,例如,不能直接將兩個屬於room的類別變數作相加來當作其成員變數相加,必須另外透過成員函數進行運算....Classroom{private:floatledge,sedge;public:…voidaddsquare(roo
8、mr1,roomr2)}r1,r2,r3;...voidroom::addsquare(roomr1,roomr2){ledge=r1.ledge+r2.ledge;sedge=r1.sedge+r2.sedge;}…voidmain(){...r3.addsuare(r1,r2);r3=r1+r2;//error}C++提供運算子的複載(多元定義opera
此文档下载收益归作者所有