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

正文內(nèi)容

程序設(shè)計(jì)實(shí)習(xí)運(yùn)算符重載-資料下載頁(yè)

2025-10-08 13:32本頁(yè)面

【導(dǎo)讀】類的定義、成員屬性、成員函數(shù)、類的作用域。對(duì)象的創(chuàng)建、存儲(chǔ)、訪問(wèn)。構(gòu)造函數(shù)、析構(gòu)函數(shù)。特殊的構(gòu)造函數(shù):復(fù)制構(gòu)造函數(shù)、轉(zhuǎn)換構(gòu)造函數(shù)、初始。成員對(duì)象和封閉類。B.成員函數(shù)內(nèi)的this指針,指向成員函數(shù)所作用的對(duì)象。以下程序編譯、連接都能通過(guò),請(qǐng)寫出運(yùn)行時(shí)輸出的結(jié)。你認(rèn)為沒有輸出的,就寫"無(wú)輸出". 靜態(tài)成員函數(shù)的使用方法。兩種運(yùn)算符重載的實(shí)現(xiàn)方式。常見的運(yùn)算符重載。自增運(yùn)算符++、自減運(yùn)算符--. C++預(yù)定義了一組運(yùn)算符,用來(lái)表示對(duì)數(shù)據(jù)的。只能用于基本的數(shù)據(jù)類型:整型、實(shí)型、字符型、cin和cout使用運(yùn)算符“<<”、“>>”進(jìn)行流操作時(shí),C++提供了數(shù)據(jù)抽象的手段,允許用戶定義抽象數(shù)據(jù)類。對(duì)一個(gè)群體,按照他們的體重指數(shù)進(jìn)行排序:涉及。Bill和Jimmy是CMan的兩個(gè)對(duì)象。plex_a和plex_b是兩個(gè)復(fù)數(shù)對(duì)象。以用于類所表示的抽象數(shù)據(jù)類型。

  

【正文】 } const Screen amp。operator* () const { return *ptrsp。 } const Screen *operator () const { return ptrsp。 } private: Screen *ptr。 } ? const版本和非 const版本區(qū)別: const成員返回 const引用以防止用戶改變基礎(chǔ)對(duì)象 52 重載成員訪問(wèn)操作符 ? 成員訪問(wèn)操作符與下標(biāo)操作符一樣,一般應(yīng)該定義 const版本和非 const版本。 ? 解引用操作符 (*)不要求 定義為成員函數(shù)。 ? 箭頭操作符 () 必須定義為類成員函數(shù) ,必須返回 指向類類型的指針, 或者返回 定義了自己的箭頭操作符的類類型對(duì)象 。 ? 像一個(gè)二元操作符:接受一個(gè)對(duì)象和一個(gè)成員名,但事實(shí)上它不接受顯式形參。 ? 例如: Ptr *operator() {return ptr。}。這里沒有形參,由編譯器處理獲取成員的工作。 ? 編寫程序: ptraction()時(shí),實(shí)際上等價(jià)于: (ptraction)()。而編譯器按如下規(guī)則對(duì) ptraction求值: ① ptr是一個(gè)指針,指向具有名為 action的成員的類對(duì)象,則編譯器將代碼編譯為調(diào)用該對(duì)象的 action成員。 ② 否則,如果 action是定義了 operator操作符的類的一個(gè)對(duì)象,則 ptraction與 ()action相同。即,執(zhí)行 ptr的 operator(),然后使用該結(jié)果重復(fù)這三步。 ③ 否則代碼出錯(cuò) 53 重載 ++和 運(yùn)算符 ? 自增運(yùn)算符 ++、自減運(yùn)算符 有前置 /后置之分,為了區(qū)分所重載的是前置運(yùn)算符還是后置運(yùn)算符, C++規(guī)定 ? 前置運(yùn)算符作為一元運(yùn)算符重載 ? class_a amp。operator++()或 friend class_a amp。operator++(class_a amp。) ? class_a amp。operator()或 friend class_a amp。operator(class_a amp。) ? 后置運(yùn)算符作為二元運(yùn)算符重載 ? class_a operator++( int )或 friend class_a operator++(class_a amp。, int) ? class_a operator(int)或 friend class_a operator(class_a amp。, int) ? obj++: ++(0)、或者 operator++(obj, 0) ? ++obj: ++()、或者 operator++(obj) 實(shí)參 0為 “ 啞值 ” ,用于使編譯器區(qū)分前置還是后置 問(wèn)題:為什么前置返回值為對(duì)象引用,而后置返回值為對(duì)象? class Date { public: Date( int m = 1, int d = 1, int y = 1900 )。 // constructor Date amp。operator++()。 // preincrement operator Date operator++( int )。 // postincrement operator private: int month。 int day。 int year。 static const int days[]。 // array of days per month void dateIncrement()。 // utility function }。 const int Date::days[]={0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }。 Date amp。Date::operator++() { dateIncrement()。 return *this。 // reference return to create an lvalue } //前置形式叫做 “ 增加然后取回值 ” Date Date::operator++( int ) { Date temp = *this。 dateIncrement()。 // return nonincremented, saved, temporary object return temp。 // value return。 not a reference return }//后置形式叫做 “ 取回然后增加 ” 。 void Date::dateIncrement() { …… } Date d4( 3, 18, 1969 )。 ++d4。// call ++() d4++。 //call ++(0) 57 如何選擇使用哪種方式重載? ? 對(duì)于單目運(yùn)算符 (后置“ ++”、“ ”除外 ) ,通常只需要重載為成員函數(shù) ? 對(duì)于雙目運(yùn)算符,如果表達(dá)式的左右操作數(shù)都相同,也只要重載為成員函數(shù) ? 對(duì)于雙目運(yùn)算符 op,在許多情況下都希望:對(duì)類 A進(jìn)行重載后,表達(dá)式的左操作數(shù)可以是 A的對(duì)象,也可以不是 A的對(duì)象 ? 例如對(duì)于字符串類 String,重載“ +”,合并兩個(gè)字符串 ? s1+ s2 : ? s+“abc”: ? “ abc”+s ? 同時(shí)將函數(shù) operator op重載為 A的成員函數(shù)和友員函數(shù) ? 支持左操作數(shù)為類 A的對(duì)象 ? String operator+(const String amp。) ? String operator+(const char *) ? 支持左操作數(shù)為非類 A的對(duì)象 ? friend String operator+(const char *, const String amp。) 58 this指針 ? this是 C++中用來(lái)表示當(dāng)前對(duì)象地址的一個(gè)隱含指針變量。 ? 當(dāng)對(duì)一個(gè)對(duì)象調(diào)用成員函數(shù)時(shí),編譯程序先將對(duì)象的地址賦給 this指針,然后調(diào)用成員函數(shù),每次成員函數(shù)存取數(shù)據(jù)成員時(shí),由隱含作用 this指針。 ? 可以使用 *this來(lái)標(biāo)識(shí)調(diào)用該成員函數(shù)的對(duì)象。 ? 在類的成員函數(shù)中需要 ? 當(dāng)前對(duì)象的引用時(shí),用“ *this”表示 。例如:在重載前置自增運(yùn)算時(shí),需要返回當(dāng)前對(duì)象的引用 ? 引用:對(duì)象的別名,直接指向目標(biāo),不分配空間,不需要銷毀 ? 賦值必須返回 *this ? 當(dāng)前對(duì)象的地址時(shí),用“ this”表示 。例如:需要把當(dāng)前對(duì)象的地址傳遞給某個(gè)函數(shù)調(diào)用 59 抽象數(shù)據(jù)類型的強(qiáng)制類型轉(zhuǎn)換 ? 在一些基本數(shù)據(jù)類型之間, C++允許進(jìn)行強(qiáng)制類型轉(zhuǎn)換 ? float_b = (float) int_a:把 int_a強(qiáng)制轉(zhuǎn)換成 float型數(shù)據(jù) ? int_a = (int) char_c:把 char_c強(qiáng)制轉(zhuǎn)換成 int型數(shù)據(jù) ? 對(duì)類 A表示的抽象數(shù)據(jù)類型,如何將它的對(duì)象轉(zhuǎn)換成其他類型的數(shù)據(jù)?使用非靜態(tài)成員函數(shù)對(duì) A進(jìn)行運(yùn)算符重載,這種運(yùn)算符稱作“轉(zhuǎn)換運(yùn)算符” ? operator int() const ? “(int) A_obj”等價(jià)于“ int()”,返回值類型是 int ? operator otherClass() const ? “(otherClass) A_obj”等價(jià)于“ otherClass()”,返回值類型是 otherClass ? 對(duì)于轉(zhuǎn)換運(yùn)算符,不能夠?yàn)橹剌d成員函數(shù)指定返回值類型, 轉(zhuǎn)換運(yùn)算符本身就代表了返回值類型 60 轉(zhuǎn)換運(yùn)算符 ? 轉(zhuǎn)換操作符( conversion operator)是一種特殊的類成員函數(shù),其形式為: operator type()。 ? 其中, type表示內(nèi)置類型名、類類型名或由類型別名所定義的名字。 ? 對(duì)任何可作為函數(shù)返回類型的類型( void除外)都可以定義轉(zhuǎn)換函數(shù)。 ? 一般而言,不允許轉(zhuǎn)換為數(shù)組或函數(shù)類型,轉(zhuǎn)換為指針類型(數(shù)據(jù)和函數(shù)指針)以及引用類型是可以的。 ? 轉(zhuǎn)換函數(shù)并且形參表必須為空。 ? 通常轉(zhuǎn)換操作符應(yīng)定義為 const成員。 61 示例程序 ? CMan類 ? 運(yùn)算符重栽 man5:man的身高增長(zhǎng)了 5厘米 man+8:man的體重增長(zhǎng)了 8公斤 7+man:man的體重增長(zhǎng)了 7公斤 ? 強(qiáng)制類型轉(zhuǎn)換 quota = (float) man: 把 man根據(jù)他的體重指數(shù)轉(zhuǎn)換成一個(gè)浮點(diǎn)數(shù) ? 程序放到網(wǎng)上,課后閱讀 62 作業(yè) ? 閱讀教材 ? 郵件作業(yè) ? 大整數(shù)運(yùn)算練習(xí) :請(qǐng)編寫一個(gè)用于超長(zhǎng)整數(shù)處理的類,使得下列程序能正確運(yùn)行。假設(shè)每個(gè)超長(zhǎng)整數(shù)最多有 100位十進(jìn)制整數(shù)。
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1