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

正文內(nèi)容

c++多態(tài)性課件講座-全文預(yù)覽

2025-10-21 16:41 上一頁面

下一頁面
  

【正文】 //給數(shù)據(jù)成員賦初值 void print()。 42 例 包含 “ ++”和 “ ”兩種重載運(yùn)算符 include include class over{ int i1, i2, i3。 //成員函數(shù)重載 operator++(Xamp。 (1) 前綴方式 ++ob,可以用運(yùn)算符函數(shù)重載為: ++()。但是 C++ “ ++”(或 “ ”)時(shí),不能顯式地區(qū)分是前綴還是后綴方式。如果運(yùn)算符所需的操作數(shù)(尤其是第一個(gè)操作數(shù))希望有隱式類型轉(zhuǎn)換,則運(yùn)算符重載必須用友元函數(shù),而不能用成員函數(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)算符既可說明為成員運(yùn)算符函數(shù),又可說明為友元運(yùn)算符函數(shù)。 ()。 return temp。 return temp。 }。 public: AB(int x=0,int y=0) {a=x。然而,下一條語句就不能工作了: ob=100+ob。 =b+x。 ( 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ù)。 //隱式調(diào)用 ()。 與 ++() 兩者是等價(jià)的,其執(zhí)行效果是完全相同的。 ++()。 } 33 接 1 例 void main() { coord ob(10,20)。} void coord::print() {cout x:x,y:yendl。 coord operator ++()。 32 對(duì)單目運(yùn)算符而言,成員運(yùn)算符函數(shù)的參數(shù)表中沒有參數(shù),此時(shí)當(dāng)前對(duì)象作為運(yùn)算符的一個(gè)操作數(shù)。一般而言,采用成員函數(shù)重載雙目運(yùn)算符 后,可以用以下兩種方法來使用: aa bb。 A5= *(A2)。 A6=A1/A2。 //輸出復(fù)數(shù)相乘的結(jié)果 A5 ()。 //輸出復(fù)數(shù) A1 ()。 //復(fù)數(shù)相加 A4=A1A2。 if(imag0)cout+。 =(real*+imag*)*t。 return temp。 return temp。 return temp。imag=i。 //重載復(fù)數(shù) “ ‖運(yùn)算符 plex operator *(plex c)。 //復(fù)數(shù)的虛數(shù)部分 public: plex(double r=,double i=)。 }。 25 成員運(yùn)算符函數(shù) 運(yùn)算符函數(shù)可以定義為類的成員(稱為成員運(yùn)算符函數(shù)) 1. 成員運(yùn)算符函數(shù)定義的語法形式 成員運(yùn)算符函數(shù)的原型在類的內(nèi)部聲明格式為: class X{ //... 返回類型 operator 運(yùn)算符 (形參表 ); //... }。 //隱式調(diào)用 operator(aa)。 //隱式調(diào)用友元運(yùn)算符函數(shù) ()。 return op。 //聲明友元運(yùn)算符函數(shù),形參為引用 }。y=j。),這樣函數(shù)參數(shù)的任何改變都影響產(chǎn)生調(diào)用的操作數(shù),從而保持了兩個(gè)運(yùn)算符的原意。這個(gè)函數(shù)是通過傳值的方法傳遞參數(shù)的,函數(shù)體內(nèi)對(duì) op的所以修改都無法傳到函數(shù)體外。 //顯式調(diào)用 ( )。 return op。 } friend coord operator++(coord op)。 } 20 使用友元函數(shù)重載 “ + +”, “ ”這樣的運(yùn)算符,可能會(huì)出現(xiàn)的問題 例 include class coord { int x,y。 } 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。 }。 public: AB(int x=0,int y=0) {a=x。//輸出復(fù)數(shù)相除結(jié)果 A6 } 18 程序運(yùn)行結(jié)果如下: + + + + +23i + 調(diào)用時(shí): aa bb。 //輸出復(fù)數(shù) A2 ()。 //復(fù)數(shù)相減 A5=A1*a2。 if(imag0) cout―+‖。 =(*+*)*t。 return temp。 return temp。 return temp。 //用友元運(yùn)算符函數(shù)重載復(fù)數(shù) “ /‖ }。 friend plex operator + (plex a,plex b)。 double imag。與成員運(yùn)算符函數(shù)不同,友元運(yùn)算符函數(shù)是不屬于任何類對(duì)象的,它沒有 this指針。 || ++ [] () new delete 也有一些運(yùn)算符是不能被重載的,如: . .* :: ?: 預(yù)處理符號(hào) 和 也不能重載。 ( 6)在 C++中,大多數(shù)系統(tǒng)預(yù)定義的運(yùn)算符都能被重載,例如 + * / % ^ amp。所以保持原含義,容易被接受,也符合人們的習(xí)慣。//調(diào)用運(yùn)算符函數(shù) operator+()的第二種方 coutreal2=‖ imag2=endl。 } Void main() {plex 1(,),2(,), total1, total2。 plex operator+(plex co1,plex co2) { plex temp。 double imag。 return temp。如果編譯器在一個(gè)運(yùn)算符的兩邊看到自定義的數(shù)據(jù)類型,就執(zhí)行用戶自己的函數(shù),而不是常規(guī)運(yùn)算符。 7 類外部的運(yùn)算符函數(shù) 為了表達(dá)上的方便,人們希望預(yù)定義的內(nèi)部運(yùn)算符(如 “ +‖、 “ ‖、“ *” 、 “ /‖等)在特定類的對(duì)象上以新的含義進(jìn)行解釋,如希望能夠?qū)崿F(xiàn) total=1+2,這就需要用重載運(yùn)算符來解決。 若要把類 plex的兩個(gè)對(duì)象 1和 2加在一起,下面的語句是不能實(shí)現(xiàn)的: void main() { plex 1(,), 2(,), total。 函數(shù) operator()可以 (1)外部函數(shù) (2)類的友元函數(shù) (3)是類的成員函數(shù) 6 類以外的運(yùn)算符重載 對(duì)基本的數(shù)據(jù)類型, C++提供了許多預(yù)定義的運(yùn)算符,如 “ +‖、 “ ‖、 “ *” 、 “ /‖、 “ =‖ 等,若有一個(gè)復(fù)數(shù)類 plex: class plex{ public: double real,imag。例如: point::area()和circle::area()分別調(diào)用類 point和類 circle的 area()函數(shù)。 ,只是它們屬于不同的類。 cout()endl。} float area(){return 3,1416*radius*radius。} float area(){return 。函數(shù)重載的意義在于它能用同一個(gè)名字訪問一組相關(guān)的函數(shù),也就是說,能使用戶為某一類操作取一個(gè)通用的名字,而由編譯程序來選擇具體由哪個(gè)函數(shù)來執(zhí)行,因而有助于解決程序的復(fù)雜性問題。在C++中,編譯時(shí)多態(tài)性是通過 函數(shù)重載 和 運(yùn)算符重載 實(shí)現(xiàn)的。 靜態(tài)聯(lián)編(前期聯(lián)編) 靜態(tài)聯(lián)編要求在程序編譯時(shí)就知道調(diào)用哪個(gè)函數(shù),就決定如何實(shí)現(xiàn)某一動(dòng)作。 聯(lián)編的概念: 一個(gè)源程序經(jīng)過編譯、連接、成為可執(zhí)行文件的過程是把可執(zhí)行代碼聯(lián)編(或稱裝配)在一起的過程。 靜態(tài)聯(lián)編支持的多態(tài)性稱為編譯時(shí)多態(tài)性,也稱靜態(tài)多態(tài)性。 3 函數(shù)重載 編譯時(shí)多態(tài)性可以通過函數(shù)重載來實(shí)現(xiàn)。y=b。 public: circle(int x,int y,int rad):point(x,y){radius=rad。 circle c(8,8,30)。//執(zhí)行基類 point中的 area()的函數(shù) } 程序運(yùn)行結(jié)果為: 0 0 4 說明: 在基類和派生類中的函數(shù)重載有兩種情況: ,這種重載函數(shù)的定義和調(diào)用方法在前面章節(jié)已進(jìn)行了介紹;在編譯時(shí)根據(jù)參數(shù)不同來區(qū)分函數(shù)重載。 ( 2)使用 “ 類名 ::‖加以區(qū)分。運(yùn)算符函數(shù)定義了重載的運(yùn)算符將要進(jìn)行的新的操作,這種操作通常作用在一個(gè)類上。} }。 C++還是無法直接將兩個(gè) plex類對(duì)象相加。 表 運(yùn)算符函數(shù) 函 數(shù) 功 能o p e r a t o r + ( ) 加 法o p e r a t o r ( ) 減 法o p e r a t o r * ( ) 乘 法o p e r a t o r / ( ) 除 法o p e r a t o r ( ) 小 于……………… ………………8 運(yùn)算符函數(shù) operator+() 在編譯時(shí)遇到名為 operator的運(yùn)算符函數(shù)( 表示所要重載的運(yùn)算符),就檢查傳遞給函數(shù)的參數(shù)的類型。 =+。 9 例 運(yùn)算符函數(shù) operator+()將兩個(gè) plex類對(duì)象相加程序 include class plex{ public: double real。} }。 return temp。 total2=1+2。例如,可以把加運(yùn)算符重載成減操作,但這樣容易造成混亂。因此,可以為同一個(gè)運(yùn)算符定義幾個(gè)運(yùn)算符重載函數(shù)來進(jìn)行不同的操作 ( 5)重載運(yùn)算符與預(yù)定義運(yùn)算符的使用方法完全相同,它不能改變?cè)羞\(yùn)算符的參數(shù)個(gè)數(shù)(單目或雙目),也不能改變?cè)械膬?yōu)先級(jí)和結(jié)合性。amp。 12 在類外,友元運(yùn)算符函數(shù)與定義一般的友元函數(shù)相似,其格式如下: 返回類型 operator 運(yùn)算符 (參數(shù)表 ) { //函數(shù)體 } 由于友元函數(shù)不是類的成員函數(shù),所以不需要綴上類名。 例 友元函數(shù)重載雙目運(yùn)算符 兩個(gè)復(fù)數(shù) a+bi和 c+di進(jìn)行加、減、乘、除的方法如下: 加法: (a+bi)+(c+di)=(a+c)+(b+d)i 減法: (a+bi)(c+di)=(ac)+(bd)i 乘法: (a+bi)*(c+di)=(acbd)+(ad+bc)i 除法: (a+bi)/(c+di)=((a+bi)*(cdi))/(c*c+d*d) 14 include class plex{ private: double real。} void print()。 //用友元運(yùn)算符函數(shù)重載復(fù)數(shù) “ *” friend plex operator / (plex a,plex b)。 =+。 =。 =*+*。 t=1/(*+*)。 } void plex::print() //輸出顯示復(fù)數(shù) { coutreal。 //復(fù)數(shù)相加 A4=A1A2。 //輸出復(fù)數(shù) A1 ()。//輸出復(fù)數(shù)相乘結(jié)果 A5 ()。 include class AB{ int a,b。//聲明重載單目運(yùn)算符“ ‖ void show()。 return obj。 ()。 } void print( ) { cout x:x,y:yen
點(diǎn)擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1