版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 高級語言C+程序設(shè)計(jì)第第 5 章章 函數(shù)與運(yùn)算符的重載函數(shù)與運(yùn)算符的重載 函數(shù)的定義和調(diào)用方法;函數(shù)的定義和調(diào)用方法; - 5.2函數(shù)調(diào)用時(shí)的參數(shù)傳遞方法;函數(shù)調(diào)用時(shí)的參數(shù)傳遞方法; 函數(shù)的嵌套與遞歸函數(shù)的嵌套與遞歸 - 5.3 函數(shù)與運(yùn)算符的重載函數(shù)與運(yùn)算符的重載 - 5.4 函數(shù)與函數(shù)與C+程序結(jié)構(gòu)程序結(jié)構(gòu) - 5.5 函數(shù)的重載和默認(rèn)參數(shù)值;函數(shù)的重載和默認(rèn)參數(shù)值;4. 庫函數(shù)的正確使用;庫函數(shù)的正確使用;本章重點(diǎn)本章重點(diǎn) 一一. 函數(shù)的概念函數(shù)的概念1. 函數(shù)是一個(gè)完成特定功能的程序段,除主函數(shù)不能被其它函數(shù)調(diào)用外,其它函數(shù)函數(shù)是一個(gè)完成特定功能的程序段,除主函數(shù)不能被其它函數(shù)調(diào)用外
2、,其它函數(shù)可以通過函數(shù)調(diào)用語句以及參數(shù)的傳遞實(shí)現(xiàn)調(diào)用、以完成既定功能??梢酝ㄟ^函數(shù)調(diào)用語句以及參數(shù)的傳遞實(shí)現(xiàn)調(diào)用、以完成既定功能。2. 函數(shù)的分類函數(shù)的分類:(1) 主函數(shù)主函數(shù)(main)和輔函數(shù)和輔函數(shù)(2) 標(biāo)準(zhǔn)函數(shù)標(biāo)準(zhǔn)函數(shù)(系統(tǒng)函數(shù)系統(tǒng)函數(shù))和用戶定義函數(shù)和用戶定義函數(shù)(3) 無參函數(shù)和有參函數(shù)無參函數(shù)和有參函數(shù) 無參函數(shù)無參函數(shù) - 函數(shù)名函數(shù)名( ) 有參函數(shù)有參函數(shù) - 函數(shù)名函數(shù)名( 形式參數(shù)表形式參數(shù)表 )二二. 函數(shù)的定義函數(shù)的定義 定義格式:存儲(chǔ)類型符定義格式:存儲(chǔ)類型符 數(shù)據(jù)類型符數(shù)據(jù)類型符 函數(shù)名函數(shù)名(形式參數(shù)表形式參數(shù)表) - 函數(shù)頭函數(shù)頭 數(shù)據(jù)定義語句序列;數(shù)據(jù)
3、定義語句序列; 執(zhí)行語句序列;執(zhí)行語句序列; 函數(shù)體函數(shù)體 return ( 表達(dá)式表達(dá)式 ) ; 存儲(chǔ)類型:存儲(chǔ)類型: extern - 外部函數(shù)外部函數(shù) (省略時(shí)的默認(rèn)類型省略時(shí)的默認(rèn)類型) static - 內(nèi)部函數(shù)內(nèi)部函數(shù) (只能在本編譯文件內(nèi)使用只能在本編譯文件內(nèi)使用) 數(shù)據(jù)類型:函數(shù)返回值的類型數(shù)據(jù)類型:函數(shù)返回值的類型 ( 無返回值為無返回值為 void 類型類型)三三. 函數(shù)值和函數(shù)值和return語句語句(1) 函數(shù)值函數(shù)值 - 被調(diào)函數(shù)執(zhí)行后所返回的值被調(diào)函數(shù)執(zhí)行后所返回的值. 無返回值時(shí),則定義為無返回值時(shí),則定義為 void(空空)函數(shù)函數(shù).(2) return語句語句
4、 - 返回函數(shù)值的語句。返回函數(shù)值的語句。 格式:格式: return 表達(dá)式;表達(dá)式; 形式參數(shù)表格式:形式參數(shù)表格式:(數(shù)據(jù)類型數(shù)據(jù)類型 形式參數(shù)形式參數(shù)1 ,數(shù)據(jù)類型,數(shù)據(jù)類型 形式參數(shù)形式參數(shù)2,. . . )【例【例6-1】調(diào)用函數(shù)比較】調(diào)用函數(shù)比較2個(gè)數(shù)的大小并返回大數(shù)。個(gè)數(shù)的大小并返回大數(shù)。#include int max(int m1, int m2)using namespace std; int max(int, int); int x;int main() if(m1m2) x=m1; else x=m2;int a,b,x; return x;a=2,b=3; x=ma
5、x(a, b);coutxendl;return 0;一一. 函數(shù)的調(diào)用形式函數(shù)的調(diào)用形式1. 調(diào)用格式:調(diào)用格式: 函數(shù)名函數(shù)名( 實(shí)際參數(shù)表實(shí)際參數(shù)表)2. 被調(diào)函數(shù)的聲明被調(diào)函數(shù)的聲明 如果被調(diào)函數(shù)的定義在主調(diào)函數(shù)之后,如果被調(diào)函數(shù)的定義在主調(diào)函數(shù)之后, 一般要對被調(diào)函數(shù)加以聲明。一般要對被調(diào)函數(shù)加以聲明。 被調(diào)函數(shù)的聲明格式:被調(diào)函數(shù)的聲明格式: 數(shù)據(jù)類型符數(shù)據(jù)類型符 被調(diào)函數(shù)名被調(diào)函數(shù)名(形式參數(shù)表形式參數(shù)表) ;3. 調(diào)用方式調(diào)用方式 (1) 函數(shù)調(diào)用語句函數(shù)調(diào)用語句 【例【例6-2】函數(shù)調(diào)用語句】函數(shù)調(diào)用語句 p.104#includeusing namespace std;vo
6、id room1();void room2();void main()cout“I am in main and call romm*.”endl;room1();room2();void room1()cout“Now I am in room1.”endl; void room2()cout“Now I am in room2.”endl; (2) 函數(shù)作為表達(dá)式調(diào)用函數(shù)作為表達(dá)式調(diào)用【例【例6-1】 x=max(a, b);(3) 函數(shù)作為另一個(gè)函數(shù)的參數(shù)調(diào)用函數(shù)作為另一個(gè)函數(shù)的參數(shù)調(diào)用#include double max(double m1, double m2)using name
7、space std; double max(int, int); if(m1m2) return m1; void main() else return m2; double a=2.5 , b=3.39, c=13.25; cout“max=”max(c, max(a,b) endl;(4) 函數(shù)嵌套調(diào)用方式函數(shù)嵌套調(diào)用方式【例【例6-3】函數(shù)嵌套調(diào)用】函數(shù)嵌套調(diào)用#include using namespace std;void room1();void room2();void main()cout“I am in main and call romm*.”endl;room1();vo
8、id room2()cout“Now I am in room2.”endl; void room1()cout“Now I am in room1 and call room2.”endl; room2(); - 利用形參與實(shí)參在函數(shù)利用形參與實(shí)參在函數(shù)間傳遞數(shù)據(jù)間傳遞數(shù)據(jù) 1. 形式參數(shù)形式參數(shù) - 在聲明函數(shù)時(shí)指在聲明函數(shù)時(shí)指定函數(shù)參數(shù)的名稱、類型及個(gè)數(shù)。定函數(shù)參數(shù)的名稱、類型及個(gè)數(shù)。 形式參數(shù)表格式:形式參數(shù)表格式:( 數(shù)據(jù)類型數(shù)據(jù)類型 形式參數(shù)形式參數(shù)1 ,數(shù)據(jù),數(shù)據(jù)類型類型 形式參數(shù)形式參數(shù)2,. . . )2. 實(shí)在參數(shù)實(shí)在參數(shù) - 在函數(shù)調(diào)用時(shí)取在函數(shù)調(diào)用時(shí)取代形參作為局部變量
9、給予分配內(nèi)代形參作為局部變量給予分配內(nèi)存單元,存單元, 調(diào)用結(jié)束后,調(diào)用結(jié)束后,釋放占用的內(nèi)存單元。釋放占用的內(nèi)存單元。 實(shí)參在類型、數(shù)量以及次序?qū)崊⒃陬愋?、?shù)量以及次序上必須與形參保持一致。上必須與形參保持一致。形參變量作為被調(diào)函數(shù)的局形參變量作為被調(diào)函數(shù)的局部變量,單獨(dú)分配內(nèi)存。部變量,單獨(dú)分配內(nèi)存。 1. 函數(shù)的調(diào)用過程函數(shù)的調(diào)用過程 (1) 調(diào)用函數(shù)在遇到被調(diào)函數(shù)時(shí),調(diào)用函數(shù)在遇到被調(diào)函數(shù)時(shí), 將以函數(shù)名提供的地址執(zhí)行一次將以函數(shù)名提供的地址執(zhí)行一次 無條件轉(zhuǎn)移指令;無條件轉(zhuǎn)移指令; (2) 轉(zhuǎn)移之前,將保護(hù)當(dāng)前工作環(huán)境,轉(zhuǎn)移之前,將保護(hù)當(dāng)前工作環(huán)境, 將下一條語句地址作為斷點(diǎn)加以將下
10、一條語句地址作為斷點(diǎn)加以 維護(hù)維護(hù), 然后轉(zhuǎn)去執(zhí)行被調(diào)函數(shù);然后轉(zhuǎn)去執(zhí)行被調(diào)函數(shù); (3) 函數(shù)執(zhí)行結(jié)束,或遇到返回語句函數(shù)執(zhí)行結(jié)束,或遇到返回語句 return時(shí),將恢復(fù)原來調(diào)用函數(shù)時(shí),將恢復(fù)原來調(diào)用函數(shù) 的工作環(huán)境,返回到斷點(diǎn)處繼續(xù)的工作環(huán)境,返回到斷點(diǎn)處繼續(xù) 執(zhí)行。執(zhí)行。 調(diào)用函數(shù)調(diào)用函數(shù) 被調(diào)函數(shù)被調(diào)函數(shù) 2. 函數(shù)的返回區(qū)函數(shù)的返回區(qū) - 返回到調(diào)用函數(shù)斷點(diǎn)處繼續(xù)執(zhí)行。返回到調(diào)用函數(shù)斷點(diǎn)處繼續(xù)執(zhí)行。 斷點(diǎn)斷點(diǎn)一一. 預(yù)處理命令預(yù)處理命令1. 包含語句包含語句格式:格式:#include (帶路徑的頭文件名格式:帶路徑的頭文件名格式: 盤符盤符:文件夾名文件夾名.頭文件名頭文件名) 例
11、:例: d:vc6includestdio.h常用的頭文件:常用的頭文件:#include / 用于數(shù)學(xué)函數(shù)用于數(shù)學(xué)函數(shù)#include / 用于字符串函數(shù)用于字符串函數(shù)#include / 用于格式輸出用于格式輸出2. 宏定義語句宏定義語句格式:格式:#define 宏名宏名 代換正文代換正文 例:例: #defineMAX(a,b) (a)(b)? (a) : (b) 【試題例】【試題例】 #define R a+b #define PI3.1415 假設(shè):假設(shè): int a=2, b=3; area = PI * R*R ; coutarea ; 問:輸出結(jié)果是:問:輸出結(jié)果是:_ ?
12、15.28 / 78.55.2 編譯指令編譯指令 二二. 條件編譯命令條件編譯命令1. #if 條件表達(dá)式條件表達(dá)式語句語句/ 條件成立時(shí)編譯內(nèi)容條件成立時(shí)編譯內(nèi)容 #else語句語句 / 條件不成立時(shí)編譯內(nèi)容條件不成立時(shí)編譯內(nèi)容 #endif2. defined 預(yù)處理操作符預(yù)處理操作符 格式:格式:defined ( 標(biāo)識符標(biāo)識符 ) 功能:當(dāng)功能:當(dāng)“標(biāo)識符被標(biāo)識符被 #define 定義,則返回邏輯值定義,則返回邏輯值“真真”(1), 否則,則返回邏輯值否則,則返回邏輯值“假假”(0) ?!纠俊纠?#includeusing namespace std;#define DEBUGv
13、oid main( ) int i=555; / 程序程序 #if defined ( DEBUG ) cout“DEBUG: value of i is ” i z) ch=a; (3) 條件編譯方法條件編譯方法 #define JIAMI #if defined JIAMI if (ch=a & chz) ch=a; cout : ch; #endif參考程序參考程序#include using namespace std;#include #define JIAMI void main()char ch= ;while(ch!=3) ch=getch(); cout=a &
14、; chz) ch=a;cout : ch; #endif coutendl;1. 什么是內(nèi)聯(lián)函數(shù)什么是內(nèi)聯(lián)函數(shù) ?-內(nèi)聯(lián)函數(shù)是函數(shù)的一種特殊形式,即將被調(diào)用函數(shù)的函數(shù)體直接插入到內(nèi)聯(lián)函數(shù)是函數(shù)的一種特殊形式,即將被調(diào)用函數(shù)的函數(shù)體直接插入到調(diào)用函數(shù)內(nèi)部的調(diào)用方式。調(diào)用函數(shù)內(nèi)部的調(diào)用方式。 在在C+程序中符合下列條件的函數(shù)為內(nèi)聯(lián)函數(shù):程序中符合下列條件的函數(shù)為內(nèi)聯(lián)函數(shù): 函數(shù)說明前冠以函數(shù)說明前冠以“inline關(guān)鍵字的函數(shù)。關(guān)鍵字的函數(shù)。 類內(nèi)定義的函數(shù)成員將在第七章介紹)。類內(nèi)定義的函數(shù)成員將在第七章介紹)。2. 內(nèi)聯(lián)函數(shù)的定義方式內(nèi)聯(lián)函數(shù)的定義方式 inline 函數(shù)類型函數(shù)類型 函數(shù)名
15、函數(shù)名( 形式參數(shù)表形式參數(shù)表 ) 函數(shù)體函數(shù)體 3. 內(nèi)聯(lián)函數(shù)使用規(guī)則內(nèi)聯(lián)函數(shù)使用規(guī)則 (1) 內(nèi)聯(lián)函數(shù)適用于較小的函數(shù),以防程序代碼增加過多;內(nèi)聯(lián)函數(shù)適用于較小的函數(shù),以防程序代碼增加過多; (2) 具有循環(huán)語句、具有循環(huán)語句、switch語句的函數(shù)不能說明為內(nèi)聯(lián)函數(shù);語句的函數(shù)不能說明為內(nèi)聯(lián)函數(shù);(3) 內(nèi)聯(lián)函數(shù)必須在調(diào)用該函數(shù)之前定義。內(nèi)聯(lián)函數(shù)必須在調(diào)用該函數(shù)之前定義。5.3 內(nèi)聯(lián)函數(shù)內(nèi)聯(lián)函數(shù) 【例】【例】#includeusing namespace std;inline int isnumber( char c ) return ( c=0 & c=9) ? 1 : 0 ;
16、 void main( ) char c;coutc;if(isnumber(c) cout“You entered a digit.”;else cout“You entered a non-digit.”;一一. 函數(shù)重載函數(shù)重載 - 為同一個(gè)函數(shù)定義幾個(gè)版本稱為函為同一個(gè)函數(shù)定義幾個(gè)版本稱為函數(shù)重載數(shù)重載. 特點(diǎn)特點(diǎn): (1) 重載函數(shù)具有同一函數(shù)名,但功能不同;重載函數(shù)具有同一函數(shù)名,但功能不同;(2) 重載函數(shù)的形式參數(shù)個(gè)數(shù)、類型、或順序不重載函數(shù)的形式參數(shù)個(gè)數(shù)、類型、或順序不同,用以區(qū)分函數(shù);同,用以區(qū)分函數(shù);(3) 不同函數(shù)類型不能區(qū)分重載函數(shù)不同函數(shù)類型不能區(qū)分重載函數(shù).【例【
17、例6-5】重載函數(shù)產(chǎn)生多態(tài)性】重載函數(shù)產(chǎn)生多態(tài)性 #includeusing namespace std;double max(double, double);/ 2個(gè)實(shí)型參數(shù)的函個(gè)實(shí)型參數(shù)的函數(shù)原型數(shù)原型int max(int, int);/ 2個(gè)整型參數(shù)的函數(shù)原個(gè)整型參數(shù)的函數(shù)原型型char max(char, char);/ 2個(gè)字符型參數(shù)的函數(shù)個(gè)字符型參數(shù)的函數(shù)原型原型int max(int, int, int); / 3個(gè)實(shí)型參數(shù)的函個(gè)實(shí)型參數(shù)的函數(shù)原型數(shù)原型void main() coutmax(2.5, 17.54)“ ”max(56,8)“ ”max(w, p)endl; co
18、ut“max(5,9,4 )=”max(5,9,4)“max(5,4,9)= ”max(5,4,9)m2)? m1 : m2; int max(int m1, int m2)/ 2個(gè)整型參數(shù)的函數(shù)原型個(gè)整型參數(shù)的函數(shù)原型 return (m1m2)? m1 : m2; char max(char m1, char m2) / 2個(gè)字符型參數(shù)的函數(shù)原型個(gè)字符型參數(shù)的函數(shù)原型 return (m1m2)? m1 : m2; int max(int m1, int m2, int m3) / 3個(gè)實(shí)型參數(shù)的函數(shù)原型個(gè)實(shí)型參數(shù)的函數(shù)原型 int t=max(m1,m2);return max(t, m
19、3);運(yùn)行結(jié)果:運(yùn)行結(jié)果: 17.54 56 w max(5,9,4 )=9 max(5,4,9)=9 二二. 函數(shù)的默認(rèn)參數(shù)值函數(shù)的默認(rèn)參數(shù)值 - 函數(shù)的形式參數(shù)具有默認(rèn)值函數(shù)的形式參數(shù)具有默認(rèn)值.1. 默認(rèn)值指定方法默認(rèn)值指定方法 (1) 聲明函數(shù)原型或定義函數(shù)時(shí)必須在參數(shù)表中指定默認(rèn)值;聲明函數(shù)原型或定義函數(shù)時(shí)必須在參數(shù)表中指定默認(rèn)值; (2) 具有默認(rèn)值的參數(shù)應(yīng)當(dāng)位于形參表的最右端;具有默認(rèn)值的參數(shù)應(yīng)當(dāng)位于形參表的最右端; (3) 使用默認(rèn)參數(shù),不能對少于參數(shù)個(gè)數(shù)的函數(shù)進(jìn)行重載。使用默認(rèn)參數(shù),不能對少于參數(shù)個(gè)數(shù)的函數(shù)進(jìn)行重載。2. 默認(rèn)參數(shù)的使用默認(rèn)參數(shù)的使用 - 如果提供實(shí)際參數(shù)值,
20、則使用實(shí)際參數(shù)值,否則函數(shù)采用默如果提供實(shí)際參數(shù)值,則使用實(shí)際參數(shù)值,否則函數(shù)采用默 認(rèn)參數(shù)值。認(rèn)參數(shù)值。 【例【例6-6】#includeusing namespace std;int add(int m1=0, int m2=0, int m3=0, int m4=0) return m1+m2+m3+m4 ; void main( ) coutadd(1,3)“,” add(1,3,5)“,” add(1,3,5,7)endl;運(yùn)行結(jié)果:運(yùn)行結(jié)果:4,9,16 1. 正確包含頭文件正確包含頭文件 - 不同的庫函數(shù)在不同的頭文件中定義,不同的庫函數(shù)在不同的頭文件中定義,使用庫函數(shù)必須包含相
21、應(yīng)的頭文件使用庫函數(shù)必須包含相應(yīng)的頭文件. 【例【例6-7】使用數(shù)學(xué)函數(shù)必須包含】使用數(shù)學(xué)函數(shù)必須包含 math.h頭文件頭文件#includeusing namespace std;#include /數(shù)學(xué)函數(shù)必須包含數(shù)學(xué)函數(shù)必須包含 math.h頭文件頭文件void main( ) float x,y,z; cin xy; z = fabs(x-y); coutx“-”y“的絕對值的絕對值為為”zendl; 5.5 正確使用庫函數(shù)正確使用庫函數(shù) 2. 正確使用庫函數(shù)正確使用庫函數(shù) 注意函數(shù)參數(shù)的類型注意函數(shù)參數(shù)的類型【例【例6-8】求】求30o的正弦值的正弦值 #includeusing
22、namespace std;#include void main( ) float x;x = sin(30.0);cout“x=”xendl;【例【例6-9】求】求 x/y 的余數(shù)的余數(shù)#includeusing namespace std;#includevoid main( )/ 求求 x/y 的余數(shù)的余數(shù) double x,y,z;/float z;/ 函數(shù)原型是:函數(shù)原型是: double fmod(double , double)x=10.5;y=3;z = fmod(x, y); coutz= z endl;6.6.1 計(jì)算機(jī)解題步驟計(jì)算機(jī)解題步驟1. 設(shè)計(jì)解題的方法;設(shè)計(jì)解題的
23、方法;2. 用類計(jì)算機(jī)語言描述解題方法;用類計(jì)算機(jī)語言描述解題方法;3. 將類計(jì)算機(jī)語言轉(zhuǎn)換成計(jì)算機(jī)語言程序;將類計(jì)算機(jī)語言轉(zhuǎn)換成計(jì)算機(jī)語言程序;4. 編輯編輯C+源程序;源程序;5. 編譯編譯C+源程序、查錯(cuò)、修改,直至產(chǎn)源程序、查錯(cuò)、修改,直至產(chǎn)生生.obj文件;文件;6. 連接成連接成.exe文件;文件;7. 運(yùn)行運(yùn)行.exe文件;文件;8. 驗(yàn)證結(jié)果,發(fā)現(xiàn)錯(cuò)誤,返回修改,直至獲驗(yàn)證結(jié)果,發(fā)現(xiàn)錯(cuò)誤,返回修改,直至獲得正確結(jié)果。得正確結(jié)果?!纠纠?-11】 編寫一個(gè)求編寫一個(gè)求 m 的階乘的函數(shù)。的階乘的函數(shù)。1. 分析問題:分析問題: m!= 123m2. 描述解題方法描述解題方法:
24、f=1; 重復(fù)計(jì)算重復(fù)計(jì)算 f=f * i; (i=1,2, ,m)3. 編寫程序;編寫程序;4. 編輯編輯 CH6Li11.CPP文件;文件;5.6 解題和算法描述解題和算法描述 int fac (int m)int i, h;h=1;for(i=1; i=m; i+) h=h*1;return h;5. 編譯編譯, 產(chǎn)生產(chǎn)生 CH6Li11.obj文件文件;6. 編寫驗(yàn)證主函數(shù)編寫驗(yàn)證主函數(shù),連接生成連接生成 CH6Limain.exe;#includeusing namespace std;#includeCH6Li11.cppvoid main( )int m;cin m;coutm!
25、= fac(m)endl;7. 運(yùn)行運(yùn)行 ;8. 驗(yàn)證結(jié)果,正確。驗(yàn)證結(jié)果,正確?!纠纠?-12】根據(jù)汽車肇事線索,追查肇事汽車?!扛鶕?jù)汽車肇事線索,追查肇事汽車。P.114線索:甲:牌照線索:甲:牌照3,4位相同;位相同; 乙:牌號為乙:牌號為 31XXXX; 丙:牌照丙:牌照5,6位相同;位相同; 丁:?。?6位是一個(gè)整數(shù)的平方位是一個(gè)整數(shù)的平方.1. 分析問題:分析問題: 3,4位相同,是同一個(gè)數(shù)字位相同,是同一個(gè)數(shù)字x,可從,可從0至至9作試探;作試探; 5,6位相同,是同一個(gè)數(shù)字位相同,是同一個(gè)數(shù)字y,可從,可從0至至9作試探;作試探; 36位是一個(gè)整數(shù)的平方,滿足位是一個(gè)整數(shù)的平
26、方,滿足: xxyy = n2 , n的范圍從的范圍從(0011)1/2 至至 (xxyy)1/2.2. 參考程序參考程序 #includeusing namespace std;void main( ) int i,j,k,c; for(i=1; i=9;i+) for(j=0;j=9; j+) if( i!=j) k=i*1000 + i*100 + j*10 + j; for( c=31; c*c= k ! if(c*c = k) cout“牌照號碼是:牌照號碼是:” 310000 + k endl; 運(yùn)行結(jié)果:牌照號碼是:運(yùn)行結(jié)果:牌照號碼是:317744 6.6.2 常用過程設(shè)計(jì)算法
27、的描述方法常用過程設(shè)計(jì)算法的描述方法 1. 傳統(tǒng)流程圖符號傳統(tǒng)流程圖符號 開始結(jié)束框開始結(jié)束框 輸入輸出框輸入輸出框 處理框處理框 判斷框判斷框 程序流方向線程序流方向線 連接框連接框 2. 簡單程序流程圖簡單程序流程圖 n y開開 始始輸入數(shù)據(jù)輸入數(shù)據(jù)數(shù)據(jù)處理數(shù)據(jù)處理結(jié)束否?結(jié)束否?輸出數(shù)據(jù)輸出數(shù)據(jù)結(jié)結(jié) 束束 可重載運(yùn)算符可重載運(yùn)算符 運(yùn)算符重載函數(shù)的定義運(yùn)算符重載函數(shù)的定義格式:格式: 類型類型 operator 運(yùn)算符運(yùn)算符( 參數(shù)表參數(shù)表 ) 函數(shù)體函數(shù)體 其中:函數(shù)名為其中:函數(shù)名為 operator 運(yùn)算符運(yùn)算符 運(yùn)算符重載函數(shù)的調(diào)用方式:運(yùn)算符重載函數(shù)的調(diào)用方式:方式方式1:與原
28、運(yùn)算符相同的調(diào)用方式:與原運(yùn)算符相同的調(diào)用方式 如如 : a + b方式方式2:一般函數(shù)調(diào)用方式:一般函數(shù)調(diào)用方式如:如:operator + ( a, b ) / 相當(dāng)于相當(dāng)于 a+b 函數(shù)間的數(shù)據(jù)傳遞函數(shù)間的數(shù)據(jù)傳遞(1) 通過賦值參數(shù)和返回語句通過賦值參數(shù)和返回語句 ;(2) 通過全局變量通過全局變量 ;(3) 通過指針類型參數(shù);通過指針類型參數(shù);(4) 通過引用類型參數(shù)通過引用類型參數(shù) ;(5) 通過函數(shù)的數(shù)組類型參數(shù)通過函數(shù)的數(shù)組類型參數(shù) ;. 運(yùn)算符重載運(yùn)算符重載 運(yùn)算符重載是對已有的運(yùn)算符賦予多重含義運(yùn)算符重載是對已有的運(yùn)算符賦予多重含義必要性必要性C+中預(yù)定義的運(yùn)算符其運(yùn)算對象
29、只能是基本數(shù)據(jù)類型,而不適用于用戶中預(yù)定義的運(yùn)算符其運(yùn)算對象只能是基本數(shù)據(jù)類型,而不適用于用戶自定義類型如類)自定義類型如類)實(shí)現(xiàn)機(jī)制實(shí)現(xiàn)機(jī)制將指定的運(yùn)算表達(dá)式轉(zhuǎn)化為對運(yùn)算符函數(shù)的調(diào)用,運(yùn)算對象轉(zhuǎn)化為運(yùn)算符將指定的運(yùn)算表達(dá)式轉(zhuǎn)化為對運(yùn)算符函數(shù)的調(diào)用,運(yùn)算對象轉(zhuǎn)化為運(yùn)算符函數(shù)的實(shí)參。函數(shù)的實(shí)參。編譯系統(tǒng)對重載運(yùn)算符的選擇,遵循函數(shù)重載的選擇原則。編譯系統(tǒng)對重載運(yùn)算符的選擇,遵循函數(shù)重載的選擇原則。規(guī)則和限制規(guī)則和限制可以重載可以重載C+中除下列運(yùn)算符外的所有運(yùn)算符:中除下列運(yùn)算符外的所有運(yùn)算符:. .* : ?:只能重載只能重載C+語言中已有的運(yùn)算符,不可臆造新的。語言中已有的運(yùn)算符,不可臆造新
30、的。不改變原運(yùn)算符的優(yōu)先級和結(jié)合性。不改變原運(yùn)算符的優(yōu)先級和結(jié)合性。不能改變操作數(shù)個(gè)數(shù)。不能改變操作數(shù)個(gè)數(shù)。經(jīng)重載的運(yùn)算符,其操作數(shù)中至少應(yīng)該有一個(gè)是自定義類型。經(jīng)重載的運(yùn)算符,其操作數(shù)中至少應(yīng)該有一個(gè)是自定義類型。 兩種重載形式兩種重載形式重載為類成員函數(shù)。重載為類成員函數(shù)。重載為友元函數(shù)。重載為友元函數(shù)。運(yùn)算符重載函數(shù)運(yùn)算符重載函數(shù)聲明形式聲明形式函數(shù)類型函數(shù)類型 operator 運(yùn)算符形參)運(yùn)算符形參) .重載為類成員函數(shù)時(shí)重載為類成員函數(shù)時(shí) 參數(shù)個(gè)數(shù)參數(shù)個(gè)數(shù)=原操作數(shù)個(gè)數(shù)原操作數(shù)個(gè)數(shù)-1(后置(后置+、-除外)除外)重載為友元函數(shù)時(shí)重載為友元函數(shù)時(shí) 參數(shù)個(gè)數(shù)參數(shù)個(gè)數(shù)=原操作數(shù)個(gè)原操作數(shù)個(gè)數(shù),且至少應(yīng)該有一個(gè)自定義類型的形數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年內(nèi)飾材料項(xiàng)目可行性研究報(bào)告
- 2025年IC卡讀寫機(jī)具項(xiàng)目可行性研究報(bào)告
- 反調(diào)試技術(shù)標(biāo)準(zhǔn)化研究-深度研究
- 合作社多元化經(jīng)營策略-深度研究
- 智能客服系統(tǒng)性能提升-深度研究
- 智能家居建材開發(fā)-深度研究
- 酒店用品居間服務(wù)合同范本
- 二零二五年度地質(zhì)災(zāi)害防治打井技術(shù)合作合同3篇
- 世界各地童話的讀后感分享
- 藥品生產(chǎn)技術(shù)合作開發(fā)協(xié)議
- 2024年陜西西安亮麗電力集團(tuán)有限責(zé)任公司招聘筆試沖刺題(帶答案解析)
- 2024年鄉(xiāng)村振興(產(chǎn)業(yè)、文化、生態(tài))等實(shí)施戰(zhàn)略知識考試題庫與答案
- 網(wǎng)絡(luò)安全基礎(chǔ)知識入門教程
- AI智慧物流園區(qū)整體建設(shè)方案
- 2024年遼寧鐵道職業(yè)技術(shù)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
- 無痛人工流產(chǎn)術(shù)課件
- 心力衰竭業(yè)務(wù)學(xué)習(xí)護(hù)理課件
- 《項(xiàng)脊軒志》公開課課件【一等獎(jiǎng)】
- 美發(fā)學(xué)徒助理職業(yè)規(guī)劃書
- 法醫(yī)病理學(xué)課件
- 介紹uppc技術(shù)特點(diǎn)
評論
0/150
提交評論