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

正文內(nèi)容

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

2025-10-08 13:32本頁面

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

  

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