![內(nèi)蒙古科技大學(xué)面向?qū)ο蟪绦蛟O(shè)計實驗10 多態(tài)(一)_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/18/caea6fdc-8170-4ace-ab3b-2a196319fc43/caea6fdc-8170-4ace-ab3b-2a196319fc431.gif)
![內(nèi)蒙古科技大學(xué)面向?qū)ο蟪绦蛟O(shè)計實驗10 多態(tài)(一)_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/18/caea6fdc-8170-4ace-ab3b-2a196319fc43/caea6fdc-8170-4ace-ab3b-2a196319fc432.gif)
![內(nèi)蒙古科技大學(xué)面向?qū)ο蟪绦蛟O(shè)計實驗10 多態(tài)(一)_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/18/caea6fdc-8170-4ace-ab3b-2a196319fc43/caea6fdc-8170-4ace-ab3b-2a196319fc433.gif)
![內(nèi)蒙古科技大學(xué)面向?qū)ο蟪绦蛟O(shè)計實驗10 多態(tài)(一)_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/18/caea6fdc-8170-4ace-ab3b-2a196319fc43/caea6fdc-8170-4ace-ab3b-2a196319fc434.gif)
![內(nèi)蒙古科技大學(xué)面向?qū)ο蟪绦蛟O(shè)計實驗10 多態(tài)(一)_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/18/caea6fdc-8170-4ace-ab3b-2a196319fc43/caea6fdc-8170-4ace-ab3b-2a196319fc435.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、內(nèi)蒙古科技大學(xué)面向?qū)ο蟮某绦蛟O(shè)計實驗報告課程名稱:面向?qū)ο蟮某绦蛟O(shè)計姓名:陳偉光實驗名稱:多態(tài)(二)學(xué)號:1567159118任課教師:劉月峰專業(yè):軟件工程指導(dǎo)教師:劉月峰班級:15-軟件一班一、實驗?zāi)康?理解靜態(tài)聯(lián)編和動態(tài)聯(lián)編的概念;2理解掌握成員函數(shù)方式運算符重載;3理解掌握友元函數(shù)方式運算符重載;4理解掌握+、-、=運算符的重載。二、實驗環(huán)境編譯器:Visual C+ 6.0.操作系統(tǒng):Windows 7旗艦版三、實驗內(nèi)容2.1練習(xí)(一):1理解下面的程序,并在VC+6.0下運行查看結(jié)果,回答程序后面的問題。#include iostream.hclass CComplexpublic:
2、CComplex() real = 0; imag = 0;CComplex(int x,int y) real = x; imag = y;int real;int imag;CComplex operator + (CComplex obj1)- CComplex obj2(real + obj1.real, imag + obj1.imag); return obj2;void main()CComplex obj1(100,30);CComplex obj2(20, 30);CComplex obj;obj = obj1+obj2; -cout obj.real endl;cout o
3、bj.imag endl;問題一:處的運算符重載,為什么該函數(shù)的返回值要設(shè)計成CComplex類型?問題二:處的運算符重載函數(shù)調(diào)用就相當(dāng)于“obj=operator+(obj1,obj2);”,但是為什么CComplex類中的運算符重載函數(shù)只設(shè)計了一個參數(shù)?2理解下面的程序,并在VC+6.0下運行查看結(jié)果,回答程序后面的問題。#include iostream.hclass CComplexpublic:CComplex() real = 0.0; imag = 0.0;CComplex(float x, float y) real = x; imag = y;CComplex operato
4、r + (CComplex &obj1, CComplex &obj2) CComplex obj3(obj1.real + obj2.real, obj1.imag + obj2.imag); return obj3;CComplex &operator+(CComplex &obj) obj.real += 1; obj.imag +=1; return obj;void print() coutreal+imagiendl;private:float real;float imag;CComplex &operator-(CComplex &x)x.real -= 1;x.imag -=
5、 1;return x;void main()CComplex obj1(2.1,3.2);CComplex obj2(3.6,2.5);coutobj1=;obj1.print();coutobj2=;obj2.print();CComplex obj3 = obj1 + obj2;coutbefor+, obj3=;obj3.print();+obj3;coutafter+, obj3=;obj3.print();-obj3;coutafter-, obj3=;obj3.print();CComplex obj4 = +obj3;coutobj4=;obj4.print();問題一:以上程
6、序中的三個運算符重載都有錯誤,試改正過來,并分析該程序的輸出結(jié)果。2.2練習(xí)(二):1把2.1中第一道題的程序改造成采取友元函數(shù)重載方式來實現(xiàn)“+”運算符,并采取友元函數(shù)重載方式增加前置和后置“+”以及“-”運算符重載,并設(shè)計主函數(shù)來驗證重載運算符的用法。四、實驗過程練習(xí)1題目提供代碼與問題如下問題一:處的運算符重載,為什么該函數(shù)的返回值要設(shè)計成CComplex類型?答因為該函數(shù)就是CComplex類重載+運算,兩個CComplex相加后結(jié)果仍應(yīng)該為CComplex類問題二:處的運算符重載函數(shù)調(diào)用就相當(dāng)于“obj=operator+(obj1,obj2);”,但是為什么CComplex類中的運
7、算符重載函數(shù)只設(shè)計了一個參數(shù)?答 因為+運算符被重載為成員函數(shù),第一個參數(shù)由this指針隱含調(diào)用,所以再設(shè)置第二個參數(shù)即可原題目運行結(jié)果如下:練習(xí) 2題目提供源代碼如下:試著編譯結(jié)果如下:分析錯因:此代碼有三處錯誤錯誤1. +運算符重載為成員函數(shù),兩個參數(shù)應(yīng)該刪除一個,因為其中一個參數(shù)是由this指針隱含調(diào)用的錯誤2. 單目運算符+也是重載為成員函數(shù),應(yīng)該刪除參數(shù)錯誤3.-運算符重載為友元函數(shù),未在類中聲明;修改之后代碼如下:嘗試運行結(jié)果如下:更改成功練習(xí)3根據(jù)題意編寫代碼如下:嘗試運行結(jié)果如下:五、實驗總結(jié)實驗源代碼:練習(xí)(一)#include iostream.hclass CComple
8、xpublic:CComplex()real = 0;imag = 0;CComplex(int x,int y)real = x;imag = y;int real;int imag;CComplex operator + (CComplex obj1)/-CComplex obj2(real + obj1.real, imag + obj1.imag);return obj2;void main()CComplex obj1(100,30);CComplex obj2(20, 30);CComplex obj;obj = obj1+obj2; /-cout obj.real endl;co
9、ut obj.imag endl;/*問題一:處的運算符重載,為什么該函數(shù)的返回值要設(shè)計成CComplex類型?答因為該函數(shù)就是CComplex類重載+運算,兩個CComplex相加后結(jié)果仍應(yīng)該為CComplex類 問題二:處的運算符重載函數(shù)調(diào)用就相當(dāng)于“obj=operator+(obj1,obj2);”,但是為什么CComplex類中的運算符重載函數(shù)只設(shè)計了一個參數(shù)?答 因為+運算符被重載為成員函數(shù),第一個參數(shù)由this指針隱含調(diào)用,所以再設(shè)置第二個參數(shù)即可*/練習(xí)(二)#include iostream.hclass CComplexpublic:CComplex()real = 0.0
10、;imag = 0.0;CComplex(float x, float y)real = x;imag = y;CComplex operator + (CComplex &obj2)/錯誤1.此處運算符重載為成員函數(shù),一個參數(shù)由this指針隱含調(diào)用;CComplex obj3(real + obj2.real, imag + obj2.imag);return obj3;CComplex &operator+()/錯誤2.單目重載運算符+重載為成員函數(shù),此處參數(shù)應(yīng)刪除;real += 1;imag += 1;return *this;void print()coutreal+imagiend
11、l;friend CComplex &operator-(CComplex &x);/錯誤3.-重載為友元函數(shù),未在類中聲明;private:float real;float imag;CComplex &operator-(CComplex &x)x.real -= 1;x.imag -= 1;return x;void main()CComplex obj1(2.1,3.2);CComplex obj2(3.6,2.5);coutobj1=;obj1.print();coutobj2=;obj2.print();CComplex obj3 = obj1 + obj2;coutbefor+,
12、 obj3=;obj3.print();+obj3;coutafter+, obj3=;obj3.print();-obj3;coutafter-, obj3=;obj3.print();CComplex obj4 = +obj3;coutobj4=;obj4.print();練習(xí)(三)#include iostream.hclass CComplexpublic:CComplex()real = 0.0;imag = 0.0;CComplex(float x, float y)real = x;imag = y;friend CComplex operator + (CComplex &ob
13、j1,CComplex &obj2)/友元函數(shù)重載+運算符CComplex obj3(obj1.real + obj2.real, obj1.imag + obj2.imag);return obj3;friend CComplex &operator+(CComplex &obj)/友元函數(shù)重載+前綴運算符+obj.real;+obj.imag;return obj;friend CComplex &operator+(CComplex &obj,int)/友元函數(shù)重載后綴+運算符CComplex temp=obj;/temp使用obj未更改前的值obj.real+;obj.imag+;re
14、turn temp;friend CComplex operator-(CComplex &x);/友元函數(shù)重載-前綴運算符friend CComplex &operator-(CComplex &x,int);/友元函數(shù)重載后綴-運算符void print()coutreal+imagiendl;private:double real;double imag;CComplex operator-(CComplex &x)x.real -= 1;x.imag -= 1;return x;CComplex &operator-(CComplex &x,int)CComplex temp=x;/temp使用x未更改前的值x.real-;x.imag-;return temp;void main()CComplex C1(1,1),C2(2,2),C3;coutC1= ; C1.print();coutC2= ; C2.print();coutBefore nC3= ; C3.print();C3=C1+
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球蒸汽甲烷重整藍氫行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國寵物蔓越莓補充劑行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球可調(diào)節(jié)軌道燈行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國核電用金屬管行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球可見光波段高光譜成像(HSI)設(shè)備行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球玻璃煙斗行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國魚雷泵行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球I型陽極氧化服務(wù)行業(yè)調(diào)研及趨勢分析報告
- 2025農(nóng)村買房子合同范本
- 工程汽車租賃合同范本
- 2024-2025學(xué)年人教版數(shù)學(xué)六年級上冊 期末綜合卷(含答案)
- 2025年初級社會工作者綜合能力全國考試題庫(含答案)
- 2024年濰坊護理職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫附答案
- 《鉗工基本知識》課件
- DB63T 2357-2024 危化品常壓儲罐安全管理規(guī)范
- 2022-2023學(xué)年五年級數(shù)學(xué)春季開學(xué)摸底考(四)蘇教版
- 【螞蟻?!?024中國商業(yè)醫(yī)療險發(fā)展研究藍皮書
- 授信審批部工作計劃及思路
- 財務(wù)管理學(xué)(第10版)課件 第3章 財務(wù)分析
- 小學(xué)語文大單元教學(xué)設(shè)計與實施
- 小學(xué)升初中六年級數(shù)學(xué)考試試卷含答案(達標(biāo)題)
評論
0/150
提交評論