资源描述
按一下以編輯母片標題樣式,按一下以編輯母片,第二層,第三層,第四層,第五層,*,Chapter 6,程式結構進階介紹,Chapter 6程式結構進階介紹,1,目標,函式指標,例外情形及例外處理,同名函式撰寫,函式樣板,組合多個函式成一完整程式,目標函式指標,2,函式指標,以指標儲存函式位址,傳回值型態,(*,指標名稱,)(,參數列型態,);,Ex:,double(*pfun)(char*,int);,double*pfun(char*,int);,函式指標以指標儲存函式位址,3,函式指標初始值設定,long sum(long num1,long num2);,Long(*pfun)(long,long)=sum;,or,long product(long,long);,Long(*pfun)(long,long);,pfun=product;,函式指標初始值設定long sum(long num1,l,4,Example Ex6_01.cpp,Example Ex6_01.cpp,5,figure p208,pdo_it(product(3,pdo_it(4,5),6);,figure p208pdo_it(product(3,p,6,以函式指標為引數,函式的參數是函式指標,Ex6_02.cpp,以函式指標為引數函式的參數是函式指標,7,函式指標陣列,double sum(double,double);,double product(double,double);,double difference(double,double);,double(*pfun3)(double,double)=sum,product,difference;,函式指標陣列double sum(double,doubl,8,函式參數初始化,/EX6_03.CPP,void showit(char*=Something is wrong.);,int main(void),char*mymess=The end of the world is nigh.;,showit();/Display the basic message,showit(Something is terribly wrong!);/Display an alternative,showit();/Display the default again,showit(mymess);/Display a predefined message,cout endl;,return 0;,void showit(char*message),cout endl,message;,return;,函式參數初始化/EX6_03.CPP,9,例外情形,處理錯誤或非預期狀況的機制,例外情形處理錯誤或非預期狀況的機制,10,覆載函式(function overloading),double maxdouble(double array,int len),double max=array0,doe(int i=1;ilen;i+),if(max arrayi),max=arrayi;,retrun max;,how about long,int,etc.,覆載函式(function overloading)doub,11,覆載函式(cont.),相同名稱的一系列函式,各有不同的參數列,注意!僅有傳回值不同,並不足以區分函式!,覆載函式(cont.)相同名稱的一系列函式,12,Example Ex6_06.cpp,int max(,int array,int len);/Prototypes for,long max(,long array,int len);/a set of overloaded,double max(,double array,int len);/functions,Example Ex6_06.cppint max(int,13,覆載函式的意義,相同運算式使用相同函式名稱處理不同運算元,Ex:“+”,對,int,long,double,實質上相同,但引數型態不同,都應覆載,使用相同函式名稱,覆載函式的意義相同運算式使用相同函式名稱處理不同運算元,14,函式樣板(Function Templates),函式具有不同變數及參數型態,程式碼相同,一群特定程式碼,依照參數型態不同自動產生不同的版本,函式樣板(Function Templates)函式具有不,15,使用函式樣板改寫 max(),關鍵字template表示樣板定義,由樣板建立的函式實體稱為實例(instantiation),/Template for function to compute the maximum element of an array,template T max(T x,int len),T max=x0;,for(int i=1;ilen;i+),if(maxxi),max=xi;,return max;,使用函式樣板改寫 max()關鍵字template表示樣板定,16,Example Ex6_07.cpp,#include,using namespace std;,/Template for function to compute the maximum element of an array,template T max(T x,int len),T max=x0;,for(int i=1;ilen;i+),if(maxxi),max=xi;,return max;,int main(void),int small=1,24,34,22;,long medium=23,245,123,1,234,2345;,double large=23.0,1.4,2.456,345.5,12.0,21.0;,int lensmall=sizeof small/sizeof small0;,int lenmedium=sizeof medium/sizeof medium0;,int lenlarge=sizeof large/sizeof large0;,cout endl max(small,lensmall);,cout endl max(medium,lenmedium);,cout endl max(large,lenlarge);,cout endl;,return 0;,Example Ex6_07.cpp#include io,17,Homework,reading example p224239,6-1,6-2,Homeworkreading example p2242,18,Chapter 7,舊式Windows的滋味,Chapter 7舊式Windows的滋味,19,目標,結構,視窗基本架構,Windows API,Windows message,Windows程式常用表示法,Windows程式基本架構,目標結構,20,程式结构进阶介绍ppt课件,21,
展开阅读全文