freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c多態(tài)性課件講座-文庫(kù)吧資料

2024-10-13 16:41本頁(yè)面
  

【正文】 調(diào)用,意為 obj3 operator(obj4,0)。 //顯式調(diào)用,意為 ++obj1 ++(0)。 cout‖\n‖。 ()。,int) ()。) obj4。 //隱式調(diào)用 over operator++(int) obj3。 ++obj1。 (8,3,8)。 (4,2,5)。 return op。 。 } over operator (overamp。 。op) //定義友元函數(shù)重載“ ‖(前綴方式) { 。 return *this。 i2++。 ++i3。,int); //友元函數(shù)重載“ ‖(后綴方式)聲明 }; 43 接 1 例 over over::operator++() //定義成員函數(shù)重載“ ++‖(前綴方式) { ++i1。 //成員函數(shù)重載“ ++‖(后綴方式)聲明 friend over operator (overamp。 //顯示輸出數(shù)據(jù)成員 over operator++()。} //給數(shù)據(jù)成員賦初值 void print()。 i2=I2。 42 例 包含 “ ++”和 “ ”兩種重載運(yùn)算符 include include class over{ int i1, i2, i3。 //友元函數(shù)重載 調(diào)用時(shí),參數(shù) int 一般用 0值。 //成員函數(shù)重載 operator++(Xamp。ob)。 (1) 前綴方式 ++ob,可以用運(yùn)算符函數(shù)重載為: ++()。 ++ob。但是 C++ “ ++”(或 “ ”)時(shí),不能顯式地區(qū)分是前綴還是后綴方式。=、 !=、 ~=、 %=、 =、=”,建議重載為成員函數(shù); ? 對(duì)于其他運(yùn)算符,建議重載為友元函數(shù)。如果運(yùn)算符所需的操作數(shù)(尤其是第一個(gè)操作數(shù))希望有隱式類型轉(zhuǎn)換,則運(yùn)算符重載必須用友元函數(shù),而不能用成員函數(shù)。 一般而言,對(duì)于雙目運(yùn)算符,將它重載為一個(gè)友元運(yùn)算符函數(shù)比重載為一個(gè)成員運(yùn)算符函數(shù)便于使用。 習(xí)慣形式 友元運(yùn)算符函數(shù)調(diào)用形式 成員運(yùn)算符函數(shù)調(diào)用形式 a+b operator+(a,b) +(b) a operator(a) () a++ operator++(a,0) ++(0) ( 4) c++的大部分運(yùn)算符既可說(shuō)明為成員運(yùn)算符函數(shù),又可說(shuō)明為友元運(yùn)算符函數(shù)。 ()。 ()。 } void main() { AB ob1(30,40),ob2。 return temp。 =x+。 return temp。 =a+x。 }。 //聲明一種友元運(yùn)算符函數(shù) friend AB opterator +(int x,AB ob)。 public: AB(int x=0,int y=0) {a=x。 37 用兩種形式的友元函數(shù)來(lái)重載運(yùn)算符函數(shù) “ +” 就能消除由于運(yùn)算符 “ +”的左操作數(shù)是內(nèi)部數(shù)據(jù)類型而帶來(lái)的問(wèn)題,下述程序說(shuō)明了如何實(shí)現(xiàn)。然而,下一條語(yǔ)句就不能工作了: ob=100+ob。 } 36 若類 AB的對(duì)象 ob要做賦值運(yùn)算和加法運(yùn)算,以下是一條正確的語(yǔ)句 ob=ob+100。 =b+x。 例如 ,在例 類 AB 中 ,用成員運(yùn)算符函數(shù)重載 “ +”運(yùn)算 AB AB::operator+(int x) { AB temp。 ( 1)對(duì)雙目運(yùn)算符 ,成員運(yùn)算符函數(shù)帶有一個(gè)參數(shù) ,友元運(yùn)算符函數(shù)帶有兩個(gè)參數(shù)對(duì)單目運(yùn)算符 ,成員運(yùn)算符函數(shù)不帶參數(shù) ,友元運(yùn)算符函數(shù)帶有一個(gè)參數(shù)。因此,在它的參數(shù)表中沒(méi)有參數(shù)。 //隱式調(diào)用 ()。參數(shù)是通過(guò) this指針隱含地傳遞給函數(shù)的。 與 ++() 兩者是等價(jià)的,其執(zhí)行效果是完全相同的。 } 程序運(yùn)行結(jié)果如下: x:10, y:20 x:11, y:21 x。 ++()。 ++ob。 } 33 接 1 例 void main() { coord ob(10,20)。 ++y。} void coord::print() {cout x:x,y:yendl。 coord::coord(int i,int j) {x=i。 coord operator ++()。 public: coord(int i=0,int j=0)。 32 對(duì)單目運(yùn)算符而言,成員運(yùn)算符函數(shù)的參數(shù)表中沒(méi)有參數(shù),此時(shí)當(dāng)前對(duì)象作為運(yùn)算符的一個(gè)操作數(shù)。 //顯式調(diào)用 成員運(yùn)算符函數(shù) operator 所需的一個(gè)操作數(shù)由對(duì)象 aa通過(guò) this指針隱含地傳遞。一般而言,采用成員函數(shù)重載雙目運(yùn)算符 后,可以用以下兩種方法來(lái)使用: aa bb。 由此我們可以看出,成員運(yùn)算符函數(shù) operator 實(shí)際上是由雙目運(yùn)算符左邊的對(duì)象 A1調(diào)用的,盡管雙目運(yùn)算符函數(shù)的參數(shù)表只有一個(gè)操作數(shù) A2,但另一個(gè)操作數(shù)是由對(duì)象 A1通過(guò) this指針隱含地傳遞的。 A5= *(A2)。程序執(zhí)行到這四條語(yǔ)句時(shí) C++將其解釋為: A3= +(A2)。 A6=A1/A2。 A4=A1A2。 //輸出復(fù)數(shù)相乘的結(jié)果 A5 ()。 //輸出復(fù)數(shù)相加的結(jié)果 A3 ()。 //輸出復(fù)數(shù) A1 ()。 //復(fù)數(shù)相乘 A6=A1/A2。 //復(fù)數(shù)相加 A4=A1A2。 } void main() { plex A1(,),A2(,),A3,A4,A5,A6。 if(imag0)cout+。 return temp。 =(real*+imag*)*t。 double t。 return temp。 =real**。 return temp。 =。 return temp。 =real+。imag=i。 //重載復(fù)數(shù) “ /‖運(yùn)算符 }。 //重載復(fù)數(shù) “ ‖運(yùn)算符 plex operator *(plex c)。 //顯示輸出復(fù)數(shù) plex operator +(plex c)。 //復(fù)數(shù)的虛數(shù)部分 public: plex(double r=,double i=)。 例 用雙目運(yùn)算符函數(shù)進(jìn)行復(fù)數(shù)運(yùn)算的例子 27 include class plex{ private: double real。 }。 26 對(duì)雙目運(yùn)算符而言,成員運(yùn)算符函數(shù)的參數(shù)表中僅有一個(gè)參數(shù),它們?yōu)檫\(yùn)算符的右操作數(shù),此時(shí)當(dāng)前對(duì)象作為運(yùn)算符的左操作數(shù),它們通過(guò) this指針隱含地傳遞給函數(shù)的。 25 成員運(yùn)算符函數(shù) 運(yùn)算符函數(shù)可以定義為類的成員(稱為成員運(yùn)算符函數(shù)) 1. 成員運(yùn)算符函數(shù)定義的語(yǔ)法形式 成員運(yùn)算符函數(shù)的原型在類的內(nèi)部聲明格式為: class X{ //... 返回類型 operator 運(yùn)算符 (形參表 ); //... }。 ( 2)由于單目運(yùn)算符“ ‖可不改變操作數(shù)自身的值,所以在例 載單目運(yùn)算符“ ‖ 的友元運(yùn)算符函數(shù)的原型可寫(xiě)成: friend AB operator –(AB obj)。 //隱式調(diào)用 operator(aa)。//顯式調(diào)用友元運(yùn)算符函數(shù) ()。 //隱式調(diào)用友元運(yùn)算符函數(shù) ()。 ()。 return op。op) //定義友元運(yùn)算符函數(shù) { ++。 //聲明友元運(yùn)算符函數(shù),形參為引用 }。} friend coord operator ++(corrdamp。y=j。 include class coord{ int x,y。),這樣函數(shù)參數(shù)的任何改變都影響產(chǎn)生調(diào)用的操作數(shù),從而保持了兩個(gè)運(yùn)算符的原意。實(shí)際上對(duì)象 x和 y并未增加。這個(gè)函數(shù)是通過(guò)傳值的方法傳遞參數(shù)的,函數(shù)體內(nèi)對(duì) op的所以修改都無(wú)法傳到函數(shù)體外。 //隱式調(diào)用 ( )。 //顯式調(diào)用 ( )。 ( )。 return op。 coord operator ++ (coord op) { ++。 } friend coord operator++(coord op)。 y=j。 } 20 使用友元函數(shù)重載 “ + +”, “ ”這樣的運(yùn)算符,可能會(huì)出現(xiàn)的問(wèn)題 例 include class coord { int x,y。 ob2=ob1。 } void AB::show() { cout―a‖‖a―‖=‖bend } 程序運(yùn)行結(jié)果如下: a=50 b=60 a=50 b=60 void mian() { AB ob1(50,60),ob2。 =。 }。} // AB的構(gòu)造函數(shù) friend AB operator(AB obj)。 public: AB(int x=0,int y=0) {a=x。 例 用友元函數(shù)重載單目運(yùn)算符 “ ”例子。//輸出復(fù)數(shù)相除結(jié)果 A6 } 18 程序運(yùn)行結(jié)果如下: + + + + +23i + 調(diào)用時(shí): aa bb。//輸出復(fù)數(shù)相減結(jié)果 A4 ()。 //輸出復(fù)數(shù) A2 ()。 //復(fù)數(shù)相除 ()。 //復(fù)數(shù)相減 A5=A1*a2。//定義 6個(gè)復(fù)數(shù)對(duì)象 A3=A1+A2。 if(imag0) cout―+‖。 return temp。 =(*+*)*t。 double t。 return temp。 =**。 return temp。 =。 return temp。 =+。 //用友元運(yùn)算符函數(shù)重載復(fù)數(shù) “ /‖ }。 //用友元運(yùn)算符函數(shù)重載復(fù)數(shù) “ ‖ friend plex operator * (plex a,plex b)。 friend plex operator + (plex a,plex b)。 imag=i。 double imag。 13 2.雙目運(yùn)算符重載 當(dāng)用友元函數(shù)重載雙目運(yùn)算符時(shí),兩個(gè)操作數(shù)都要傳給運(yùn)算符函數(shù)。與成員運(yùn)算符函數(shù)不同,友元運(yùn)算符函數(shù)是不屬于任何類對(duì)象的,它沒(méi)有 this指針。 友元運(yùn)算符函數(shù)在類的內(nèi)部 聲明 格式如下: class X { //...... friend 返回類型 operator 運(yùn)算符 (參數(shù)表 ); //...... }。 || ++ [] () new delete 也有一些運(yùn)算符是不能被重載的,如: . .* :: ?: 預(yù)處理符號(hào) 和 也不能重載。= |= = = == != = = amp。 ( 6)在 C++中,大多數(shù)系統(tǒng)預(yù)定義的運(yùn)算符都能被重載,例如 + * / % ^ amp。 ( 4) C++編譯器根據(jù)參數(shù)的個(gè)數(shù)和類型來(lái)決定調(diào)用哪個(gè)重載函數(shù)。所以保持原含義,容易被接受,也符合人們的習(xí)
點(diǎn)擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1