![C++程序設(shè)計(jì)開(kāi)發(fā)教程課件_第1頁(yè)](http://file4.renrendoc.com/view/f8505ea913d7a202078e296d98182c86/f8505ea913d7a202078e296d98182c861.gif)
![C++程序設(shè)計(jì)開(kāi)發(fā)教程課件_第2頁(yè)](http://file4.renrendoc.com/view/f8505ea913d7a202078e296d98182c86/f8505ea913d7a202078e296d98182c862.gif)
![C++程序設(shè)計(jì)開(kāi)發(fā)教程課件_第3頁(yè)](http://file4.renrendoc.com/view/f8505ea913d7a202078e296d98182c86/f8505ea913d7a202078e296d98182c863.gif)
![C++程序設(shè)計(jì)開(kāi)發(fā)教程課件_第4頁(yè)](http://file4.renrendoc.com/view/f8505ea913d7a202078e296d98182c86/f8505ea913d7a202078e296d98182c864.gif)
![C++程序設(shè)計(jì)開(kāi)發(fā)教程課件_第5頁(yè)](http://file4.renrendoc.com/view/f8505ea913d7a202078e296d98182c86/f8505ea913d7a202078e296d98182c865.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1第1章C++程式開(kāi)發(fā)初步
2
C++程式開(kāi)發(fā)初步最簡(jiǎn)單的C++程式結(jié)構(gòu)函數(shù)類與對(duì)象C++程式開(kāi)發(fā)過(guò)程與環(huán)境3程式設(shè)計(jì)中主要應(yīng)用兩大類模型面向過(guò)程的模型 概括為:數(shù)據(jù)結(jié)構(gòu)+演算法面向?qū)ο蟮哪P?認(rèn)為世界是由一些對(duì)象(objects)組成的,每一個(gè)對(duì)象包括屬性和方法兩部分;屬性是描述對(duì)象特徵的一些數(shù)據(jù)或數(shù)據(jù)結(jié)構(gòu),方法表明對(duì)象的變化或一個(gè)對(duì)象對(duì)其他對(duì)象的作用,對(duì)象間通過(guò)消息傳遞進(jìn)行通信4最簡(jiǎn)單的C++程式結(jié)構(gòu)一個(gè)簡(jiǎn)單的C++程式運(yùn)算符與運(yùn)算式數(shù)據(jù)類型變數(shù)與常量5一個(gè)簡(jiǎn)單的C++程式#include<iostream.h>intmain(){ intx,y,s; //定義3個(gè)整數(shù):兩個(gè)代表加數(shù),一個(gè)代表和
cout<<“輸入兩個(gè)整數(shù):”; //給用戶發(fā)出輸入兩個(gè)數(shù)的提示
cin>>x>>y; //輸入兩個(gè)整數(shù)到x和y s=x+y; //將x和y相加,送到s中
cout<<“x+y=” //輸出提示
<<s //輸出s的值
<<endl; //換行,語(yǔ)句結(jié)束
return0;}6上例說(shuō)明C++的注釋符有:“//”後面與“/*”和“*/”之間的“;”是C++語(yǔ)句的結(jié)束符,表明一個(gè)語(yǔ)句的結(jié)束x”、“y”和“s”稱為三個(gè)變數(shù),是三個(gè)存儲(chǔ)數(shù)據(jù)的空間的名字“cout”稱為標(biāo)準(zhǔn)輸出設(shè)備,通常指顯示器“cin”稱為標(biāo)準(zhǔn)輸入設(shè)備,通常指鍵盤(pán)“endl”表示換行“#include”稱為檔包含7運(yùn)算符與運(yùn)算式運(yùn)算符是一種程式記號(hào),它作用於運(yùn)算元而觸發(fā)某種操作由運(yùn)算符和運(yùn)算元組成的符號(hào)序列,就稱為運(yùn)算式8最基本的運(yùn)算符算術(shù)運(yùn)算符賦值運(yùn)算符複合賦值運(yùn)算符9運(yùn)算符在運(yùn)算式中的運(yùn)算順序運(yùn)算符的優(yōu)先順序別運(yùn)算符與運(yùn)算元的結(jié)合方向運(yùn)算符的先後排列順序10各種運(yùn)算符間的優(yōu)先順序別和結(jié)合性運(yùn)算符結(jié)合性優(yōu)先順序別單目減:-←高低雙目算術(shù)運(yùn)算符:*/→+-→標(biāo)準(zhǔn)輸入輸出:>><<
→賦值:=←11例1.1.1
#include<iostream.h>intmain(){intx,y;cout<<"x=3,y=8,x*=y+1:"<<(x=3,y=8,x*=y+1)<<endl;cout<<"x=3,y=8,x=x*y+1:"<<(x=3,y=8,x=x*y+1)<<endl;return0;}12++與--有兩種使用形式首碼形式,即它們?cè)谶\(yùn)算元前,如++x,--x尾碼形式,即它們?cè)谶\(yùn)算元後,如x++,x--++運(yùn)算式與--運(yùn)算式獨(dú)立使用時(shí),首碼形式與尾碼形式無(wú)區(qū)別,但它們?cè)谶\(yùn)算式中被引用時(shí),結(jié)果是不同的。首碼形式是先增(減)1,後被引用;尾碼形式是先被引用,後增(減)113例1.1.2
#include<iostream.h>intmain(){intx,y;x=5,y=x++;//先引用後增1cout<<"x=5,y=x++:"<<y<<",x="<<x<<endl;x=5,y=++x;//先增1後引用
cout<<"x=5,y=++x:"<<y<<",x="<<x<<endl; return0;}14數(shù)據(jù)類型整型類型與實(shí)型類型字元類型字串算術(shù)數(shù)據(jù)的類型轉(zhuǎn)換sizeof運(yùn)算符15數(shù)據(jù)的規(guī)範(fàn)化為數(shù)據(jù)分配相應(yīng)大小的存儲(chǔ)空間;確定數(shù)據(jù)值的範(fàn)圍;確定數(shù)據(jù)的表示精度;確定數(shù)據(jù)可以進(jìn)行的運(yùn)算種類。16最常用的數(shù)據(jù)類型的比較數(shù)據(jù)類型關(guān)鍵字意義存儲(chǔ)空間表數(shù)精度(有效數(shù)字)表數(shù)範(fàn)圍運(yùn)算類型char字元8位+、-、%short短整數(shù)16位-32768~32767+、-、*、/、%int整數(shù)32位-2147483648~2147483647float單精確度浮點(diǎn)32位7位
(3.4×10-38~3.4×1038)+、-、*、/、%double雙精度浮點(diǎn)64位16位
(2.23×10-308~1.79×10308)longdouble長(zhǎng)雙精度80位18位±(3.37×10-4932~1.18×104932)17整型類型與實(shí)型類型
整型就是不帶有小數(shù)點(diǎn)的數(shù)據(jù)類型C++還把整型數(shù)分為帶符號(hào)和不帶符號(hào)兩大類實(shí)數(shù)一般用小數(shù)形式或科學(xué)記數(shù)法(指數(shù)形式)書(shū)寫(xiě)18C++的轉(zhuǎn)義字元序列序列值字元功能\a0X07BEL警告響鈴\b0X08BS退格\f0X0CFF走紙\n0X0ALF換行\(zhòng)r0X0DCR回車(chē)\t0X09HT水準(zhǔn)製錶\v0X0BVT垂直製錶\\0X5c\反斜杠\'0X27'單引號(hào)\"0X22"雙引號(hào)\?0X3F?問(wèn)號(hào)\o整數(shù)任意0[L1]:最多為3位的八進(jìn)制數(shù)字串\xH整數(shù)任意H:十六進(jìn)制數(shù)字串19字串字串常量也稱字串文字或字串,它們是括在一對(duì)雙撇號(hào)內(nèi)的字元序列字串常量與字元型常量在內(nèi)部存儲(chǔ)上是不同的20算術(shù)數(shù)據(jù)的類型轉(zhuǎn)換在運(yùn)算式中,常常會(huì)發(fā)生數(shù)據(jù)類型的轉(zhuǎn)換,即將數(shù)據(jù)由一種類型轉(zhuǎn)換成另一種類型下麵介紹這些類型轉(zhuǎn)換規(guī)則。 常規(guī)轉(zhuǎn)換 傳送轉(zhuǎn)換 用類型運(yùn)算符進(jìn)行顯式轉(zhuǎn)換21例1.1.4#include<iostream.h>intmain(){shortinta=-32768,b,i=1234567890;//i溢出
unsignedshortintua=32768,ub;cout<<"b=ua:"<<(b=ua)<<endl;//注意ua對(duì)int溢出
cout<<"ub=a:"<<(ub=a)<<endl;//注意有符號(hào)負(fù)數(shù)向無(wú)符號(hào)數(shù)轉(zhuǎn)換
cout<<i;}22sizeof運(yùn)算符sizeof是一個(gè)單目運(yùn)算符,用以計(jì)算運(yùn)算元在內(nèi)存中佔(zhàn)用的位元組數(shù)。它的運(yùn)算元可以是以下兩種情況:
括在圓括號(hào)中的類型識(shí)別字 一個(gè)運(yùn)算式sizeof運(yùn)算符具有最高優(yōu)先順序,最高優(yōu)先順序中的運(yùn)算符都是從右向左結(jié)合的23例1.1.5#include<iostream.h>intmain()//該程式在16位和32位系統(tǒng)中的運(yùn)行結(jié)果不同!
{cout<<"sizeofunsignedchar:"<<sizeof(unsignedchar)<<endl;cout<<"sizeofchar:"<<sizeof(char)<<endl;cout<<"sizeofunsignedint:"<<sizeof(unsignedint)<<endl;cout<<"sizeofshortint:"<<sizeof(shortint)<<endl;cout<<"sizeofint:"<<sizeof(int)<<endl;cout<<"sizeofunsignedlong:"<<sizeof(unsignedlong)<<endl;cout<<"sizeoflong:"<<sizeof(long)<<endl;cout<<"sizeoffloat:"<<sizeof(float)<<endl;cout<<"sizeofdouble:"<<sizeof(double)<<endl;cout<<"sizeoflongdouble:"<<sizeof(longdouble)<<endl;}24變數(shù)與常量程式變數(shù)字面常量與符號(hào)常量25程式變數(shù)程式變數(shù)簡(jiǎn)稱變數(shù)。變數(shù)有以下特點(diǎn):變數(shù)指稱了程式中使用的一個(gè)被命名存儲(chǔ)區(qū)域(稱程式實(shí)體),以存放可由程式修改的值,變數(shù)在某一時(shí)刻的值稱為變數(shù)值。變數(shù)的名稱為變數(shù)名。C++規(guī)定變數(shù)名由如下三種符號(hào)組成: 大小寫(xiě)字母——可用於變數(shù)名的任何位置; 下劃線——可用於變數(shù)名的任何位置; 數(shù)字——不能用於變數(shù)名的首部。每個(gè)變數(shù)應(yīng)屬於一個(gè)特定的類型26例1.1.6#include<iostream.h>intmain(){inti; //聲明i為整型
i=3; //給變數(shù)i賦值3cout<<"Thefirst\"i\"is:"<<i<<endl;i=5; //給變數(shù)i再賦值5cout<<"Thesecond\"i\"is:"<<i<<endl;cout<<"Enteranumber:";cin>>i; //由鍵盤(pán)給變數(shù)i輸入一個(gè)值
cout<<"\nThelast\"i\"is:"<<i<<endl;}27字面常量與符號(hào)常量常量可以是字面常量(也稱直接常量)或符號(hào)常量。前面使用的基本上都是字面常量下麵介紹兩種符號(hào)常量: (1)用const定義的符號(hào)常量 (2)用宏定義模擬符號(hào)常量28例1.1.7/******************************程式名:area_circum**功能:計(jì)算圓的面積與周長(zhǎng)*******************************/#include<iostream.h>intmain(){floatfArea,fCircum;fArea=3.1415926*2.0*2.0;cout<<"Theareais:"<<fArea<<endl;fCircum=3.1415926*2.0*2.0;cout<<"Thecircumis:"<<fCircum<<endl;}29用宏定義模擬符號(hào)常量#include<iostream.h>#definePi3.1415926 //定義宏#definer2.0 //定義宏
intmain(){floatfArea,fCircum;fArea=Pi*r*r; //引用宏
cout<<"Theareais:"<<fArea<<endl;fCircum=2.0*Pi*r; //引用宏
cout<<"Thecircumferenceis:"<<fCircum<<endl;}30函數(shù)函數(shù)的意義與用法函數(shù)定義與函數(shù)結(jié)構(gòu)函數(shù)原型與函數(shù)聲明函數(shù)調(diào)用與內(nèi)聯(lián)函數(shù)傳值調(diào)用與引用類型庫(kù)函數(shù)應(yīng)用31函數(shù)的意義與用法函數(shù)是C++程式中組織過(guò)程的機(jī)制。它對(duì)較大的程式比較有效。這裏,主要介紹函數(shù)的用法,因此仍然使用前面介紹過(guò)的求圓的面積的例子,只不過(guò)用函數(shù)的形式來(lái)描述32例1.2.1#include<iostream.h>#definePi3.1415926 intmain(){floatflR=1.2,fArea;floatArea(float); //函數(shù)聲明fArea=Area(flR); //函數(shù)調(diào)用cout<<"Theareais:"<<fArea<<endl;}floatArea(floatfR) //定義求圓面積的函數(shù){ return(Pi*fR*fR);}33C++程式的一般結(jié)構(gòu)系統(tǒng)調(diào)用返回系統(tǒng)f1()f11(){④{↓③↓⑤main()②f11();⑥}{↓⑦↓①}f21()f1();⑧{↓⑨f2()12↓13f2();10{}↓21↓1114}f21();f22()20↓1516{f22();↓17↓1918}}34函數(shù)定義與函數(shù)結(jié)構(gòu)一個(gè)C++函數(shù)的定義由函數(shù)頭與函數(shù)體兩部分組成,形式如下:
函數(shù)首部
{
函數(shù)體
}35函數(shù)首部函數(shù)首部是函數(shù)的介面部分,其組成形式如下:
類型名
函數(shù)名(形式參數(shù)表列)函數(shù)類型規(guī)定為函數(shù)返回值的類型函數(shù)名是函數(shù)的標(biāo)識(shí),它應(yīng)是一個(gè)有效的C++識(shí)別字形式參數(shù)表列是括在園括弧中的0個(gè)或多個(gè)以逗號(hào)分隔的形式參數(shù)36函數(shù)體一個(gè)函數(shù)體是一個(gè)語(yǔ)句塊,是用一對(duì)花括弧封裝的語(yǔ)句序列。它描述了函數(shù)實(shí)現(xiàn)一個(gè)功能的過(guò)程。它最後執(zhí)行一個(gè)函數(shù)返回,返回的作用是: 將流程從當(dāng)前函數(shù)返回其上級(jí)(調(diào)用函數(shù)); 撤銷(xiāo)函數(shù)調(diào)用時(shí)為各參數(shù)及變數(shù)分配的記憶體空間; 向調(diào)用函數(shù)返回頂多一個(gè)值37例1.2.2voidArea(floatfR) //定義求圓面積的函數(shù){cout<<"Theareais:"<<(Pi*fR*fR)<<endl;return;}或voidArea(floatfR) //定義求圓面積的函數(shù){cout<<"Theareais:"<<(Pi*fR*fR)<<endl;return;}38主函數(shù)main()main()函數(shù)是一個(gè)特殊的函數(shù)。它的名字是固定的。它可看作是由操作系統(tǒng)調(diào)用的一個(gè)函數(shù)。其返回值可以是void型或int型(可以缺省)。當(dāng)其返回值為int型時(shí),用0或非0,告訴操作系統(tǒng)程式是否正常結(jié)束39例1.2.3
#include<iostream.h>main(){cout<<"ok!";return(0);}40函數(shù)原型函數(shù)原型也稱函數(shù)模型,是由函數(shù)定義中抽取出來(lái)的能代表函數(shù)應(yīng)用特徵的部分:
·
函數(shù)類型
·
函數(shù)名
·
參數(shù)個(gè)數(shù)及其類型函數(shù)原型的形式為:類型函數(shù)名(參數(shù)類型1,參數(shù)類型2,…,參數(shù)類型n)41函數(shù)提前聲明當(dāng)函數(shù)定義在前調(diào)用在後時(shí),編譯器在調(diào)用函數(shù)之前,能從其定義中抽取函數(shù)原型當(dāng)函數(shù)調(diào)用在前定義在後時(shí),要求程式員在調(diào)用之前用函數(shù)原型對(duì)函數(shù)進(jìn)行聲明,以便編譯器從中得到函數(shù)原型所提供的有關(guān)資訊函數(shù)聲明中的參數(shù)名對(duì)編譯器沒(méi)有意義42函數(shù)調(diào)用與內(nèi)聯(lián)函數(shù)函數(shù)調(diào)用的作用是:
·
用實(shí)參數(shù)(如例1.2.1中的nR)向形式參數(shù)(如例1.2.1中的fR)傳遞數(shù)據(jù);
·
中斷現(xiàn)行(調(diào)用)函數(shù),把流程轉(zhuǎn)向(被調(diào)用)函數(shù)的入口處,開(kāi)始執(zhí)行被調(diào)函數(shù)在調(diào)用與返回過(guò)程中,需要付出一定的時(shí)間與空間代價(jià)用於處理現(xiàn)場(chǎng)。當(dāng)函數(shù)較小,又反復(fù)使用時(shí),處理現(xiàn)場(chǎng)的開(kāi)銷(xiāo)比重會(huì)急劇增大。若把函數(shù)體嵌入函數(shù)調(diào)用處,便可以大大提高運(yùn)行速度,節(jié)省開(kāi)銷(xiāo)。內(nèi)聯(lián)函數(shù)就可以自動(dòng)實(shí)現(xiàn)這一功能43例1.2.4#include<iostream.h>#definePi3.1415926 intmain(){floatfR1=1.2,fR1=2.3,fArea;floatArea(float); //函數(shù)原型聲明fArea=Area(fR1); //函數(shù)調(diào)用1cout<<"Theareais:"<<fArea<<endl;fArea=Area(fR2); //函數(shù)調(diào)用2cout<<"Theareais:"<<fArea<<endl;}floatArea(floatfR) { return(Pi*fR*fR);}44例1.2.5#include<iostream.h>#definePi3.1415926 intmain(){floatfR1=1.2,fR1=2.3;floatArea(float); //函數(shù)原型聲明cout<<"Theareais:"<<Area(fR1)<<endl;//函數(shù)調(diào)用1cout<<"Theareais:"<<Area(fR2)<<endl;//函數(shù)調(diào)用2}floatArea(floatfR) { return(Pi*fR*fR);}45例1.2.6#include<iostream.h>#definePi3.1415926 intmain(){floatflR=1.2,fArea;inlinefloatArea(float); //內(nèi)聯(lián)函數(shù)以聲明為主fArea=Area(flR); cout<<"Theareais:"<<fArea<<endl;}inlinefloatArea(floatfR) //定義內(nèi)聯(lián)函數(shù){ return(Pi*fR*fR);}46內(nèi)聯(lián)函數(shù)定義方法一種是將函數(shù)定義內(nèi)嵌在類的介面中一種是定義在類介面的外部注意,由於編譯器必須知道內(nèi)聯(lián)函數(shù)的函數(shù)體才能進(jìn)行內(nèi)聯(lián)替換,因此,內(nèi)聯(lián)函數(shù)在程式中被調(diào)用之前,必須被編譯器看見(jiàn),即內(nèi)聯(lián)函數(shù)必須在調(diào)用之前定義或聲明47傳值調(diào)用與引用類型傳值調(diào)用(即“值傳遞”)是C++函數(shù)調(diào)用的重要特徵,即調(diào)用函數(shù)向被調(diào)用函數(shù)傳送的是參數(shù)值引用(reference)。這一概念的引入,大大簡(jiǎn)化了許多語(yǔ)法規(guī)則,並使得一些本來(lái)困難或不可能的實(shí)體操作成為可能48例1.2.7#include<iostream.h>
intmain()
{
intx=3,y=5;
cout<<"Befor\'swap\':x="<<x<<",y="<<y<<endl;voidswap(int,int);swap(x,y);cout<<"After\'swap\':x="<<x<<",y="<<y<<endl;}
voidswap(inta,intb){inttemp;temp=a;a=b;b=temp;cout<<"In\'swap\':a="<<a<<",b="<<b<<endl;}49例1.2.8#include<iostream.h>intmain(){inti=5;int&ri1=i;cout<<"i="<<i<<",ri1="<<ri1<<endl;i*=3; //改寫(xiě)變數(shù)cout<<"i="<<i<<",ri1="<<ri1<<endl;ri1+=5; //改寫(xiě)引用cout<<"i="<<i<<",ri1="<<ri1<<endl;}50例1.2.9#include<iostream.h>intmain(){inti=5;int&ril=i;cout<<"&i="<<&i<<",&ril="<<&ril<<endl; //&為求地址運(yùn)算符
}51引用參數(shù)的swap()函數(shù)#include<iostream.h>intmain(){intx=3,y=5;voidswap(int&,int&);//引用參數(shù)
swap(x,y);cout<<"x="<<x<<",y="<<y<<endl;}voidswap(int&n1,int&n2){inttemp=n1;n1=n2;n2=temp;}52庫(kù)函數(shù)應(yīng)用庫(kù)函數(shù)是C++廠商收集的一些成熟的函數(shù),以供用戶“拿來(lái)就用”。程式員使用庫(kù)函數(shù)無(wú)須再自行定義,只要注意事先瞭解以下3點(diǎn)便可:
·
函數(shù)的功能;
·
函數(shù)的原型——函數(shù)名、參數(shù)個(gè)數(shù)及類型、返回類型,以便正確調(diào)用;
·
使用庫(kù)函數(shù)所需的頭檔——其中有函數(shù)原型聲明。程式員使用庫(kù)函數(shù)之前只需在程式中使用#include指令嵌入相應(yīng)的頭檔而不必再進(jìn)行函數(shù)的原型說(shuō)明53例1.2.12#include<iostream.h>#include<math.h>//嵌入數(shù)學(xué)函數(shù)庫(kù)頭檔
intmain(){floatf;cout<<"Enterarealnumber:";cin>>f; cout<<"Thesqnarerootof“<<f<<”is:”<<sqrt(f)<<endl; //sqrt是數(shù)學(xué)函數(shù)庫(kù)math中的一個(gè)庫(kù)函數(shù)
}5415個(gè)標(biāo)準(zhǔn)頭檔檔案名功能檔案名功能assert.h程式斷言診斷signal.h中斷信號(hào)處理ctype.h字元處理stdarg.h可變參數(shù)的宏處理errno.h報(bào)告庫(kù)函數(shù)出錯(cuò)stddef.h公共定義float.h實(shí)型類型的特徵參數(shù)stdio.hI/O函數(shù)庫(kù)limit.h整型量大小的限制參數(shù)stdlib.h常用函數(shù)庫(kù)local.h地方特徵string.h字串處理math.h數(shù)學(xué)函數(shù)庫(kù)time.h日期與時(shí)間函數(shù)庫(kù)setjmp.h非局部跳轉(zhuǎn)55類與對(duì)象一個(gè)簡(jiǎn)單的面向?qū)ο蟮睦宇惖亩x與實(shí)現(xiàn)對(duì)象的生成與構(gòu)造函數(shù)對(duì)象的撤銷(xiāo)與釋放函數(shù)友元56一個(gè)簡(jiǎn)單的面向?qū)ο蟮睦右粋€(gè)面向?qū)ο蟮腃++程式由三部分組成:
·
類介面的定義;
·
主函數(shù)的編寫(xiě);
·
類的實(shí)現(xiàn)——
成員函數(shù)的定義57面向?qū)ο蟮某淌矫枋龅膱A#include<iostream.h>#definePi3.1415926classCircle{ //定義一個(gè)Circle類,描述了抽象的圓
private: //私有成員
floatmfR; //數(shù)據(jù)成員:半徑
public:Circle(floatfR); //成員函數(shù):構(gòu)造函數(shù)
voidOutputArea(); //成員函數(shù):求面積
voidOutputCircum(); //成員函數(shù):求周長(zhǎng)};58intmain() //進(jìn)行具體的計(jì)算{Circlea(1.23),b(5.67); //聲明兩個(gè)Circle類對(duì)象a和ba.OutputArea(); //輸出對(duì)象a的面積
a.OutputCircum(); //輸出對(duì)象a的周長(zhǎng)
b.OutputArea(); //輸出對(duì)象b的面積
b.OutputCircum(); //輸出對(duì)象b的周長(zhǎng)}Circle::Circle(floatfR) //構(gòu)造函數(shù)定義{mfR=fR;}voidCircle::OutputArea() //成員函數(shù)OutputArea()的定義{cout<<"Theareais:"<<Pi*mfR*mfR<<endl;}voidCircle::OutputCircum() //成員函數(shù)OutputCircum()的定義{cout<<"Thecircumferenceis:"<<2.0*Pi*mfR<<endl;}59類的定義與實(shí)現(xiàn)類的定義包含兩部分:
·
數(shù)據(jù)成員:描述某類對(duì)象的屬性;
·
成員函數(shù):描述某類對(duì)象的行為和變化等私有成員不允許外界直接訪問(wèn),只能由本類的成員函數(shù)訪問(wèn)。外界與對(duì)象間的資訊傳送只能通過(guò)公開(kāi)成員進(jìn)行,數(shù)據(jù)成員是對(duì)象隱藏的部分,由關(guān)鍵字private說(shuō)明為私有的由關(guān)鍵字public說(shuō)明為公開(kāi)的,資訊隱藏是面向?qū)ο蟪淌皆O(shè)計(jì)的基本原則,它將外界不需要知道的資訊都隱藏起來(lái),以減少程式設(shè)計(jì)的複雜性。因此默認(rèn)的成員都是私有的,即當(dāng)私有成員放在類介面的開(kāi)頭部分時(shí),關(guān)鍵字private可以缺省60定義內(nèi)聯(lián)成員函數(shù)的方法將成員函數(shù)直接定義在類的定義中將成員函數(shù)定義在類定義之外時(shí)使用關(guān)鍵字inline61成員函數(shù)直接定義在類的定義中#include<iostream.h>#definePi3.1415926classCircle{ private: floatmfR; public:voidCircle::OutputArea()//內(nèi)聯(lián)OutputArea(){cout<<"Theareais:"<<Pi*mfR*mfR<<endl;}voidCircle::OutputCircum() //內(nèi)聯(lián)OutputCircum(){cout<<"Thecircumferenceis:"<<2.0*Pi*mfR<<endl;}};62成員函數(shù)定義在類定義之外時(shí)使用關(guān)鍵字inline
#include<iostream.h>#definePi3.1415926classCircle{ private: floatmfR; public: voidOutputArea(); voidOutputCircum(); };inlinevoidCircle::OutputArea()//內(nèi)聯(lián)的OutputArea()定義{cout<<"Theareais:"<<Pi*mfR*mfR<<endl;}inlinevoidCircle::OutputCircum() //內(nèi)聯(lián)的OutputCircum()定義{cout<<"Thecircumferenceis:"<<2.0*Pi*mfR<<endl;}63對(duì)象的生成與構(gòu)造函數(shù)創(chuàng)建對(duì)象時(shí),要做的工作是:
·
給對(duì)象一個(gè)識(shí)別字;
·
給對(duì)象開(kāi)闢一個(gè)記憶體空間;
·
將對(duì)象中的成員數(shù)據(jù)初始化64構(gòu)造函數(shù)的特點(diǎn)構(gòu)造函數(shù)具有特定名字──與類名相同。如類Circle的構(gòu)造函數(shù)名也為Circle。構(gòu)造函數(shù)不能標(biāo)以返回類型。它的返回值是隱含的,是指向類本身的值。因此在例1.3.1中定義的構(gòu)造函數(shù)沒(méi)有返回類型。構(gòu)造函數(shù)也可以定義為內(nèi)聯(lián)函數(shù)當(dāng)系統(tǒng)執(zhí)行對(duì)象聲明語(yǔ)句時(shí),構(gòu)造函數(shù)會(huì)被自動(dòng)調(diào)用,去初始化被聲明的對(duì)象刪除構(gòu)造函數(shù)允許參數(shù)缺省調(diào)用65對(duì)象的撤銷(xiāo)與釋放函數(shù)釋放函數(shù)在對(duì)象撤銷(xiāo)時(shí)被自動(dòng)調(diào)用,用於執(zhí)行一些清理任務(wù),如釋放由構(gòu)造函數(shù)分配的記憶體等釋放函數(shù)有如下一些特點(diǎn):
·
與類同名,之前冠以波浪號(hào),以區(qū)別於構(gòu)造函數(shù);
·
不指定返回類型;
·
不能指定參數(shù)。66友元用friend聲明了的外部函數(shù)稱為這個(gè)類的友元函數(shù)元函數(shù)的使用有三個(gè)要點(diǎn):
·
在類定義中用關(guān)鍵字friend聲明;
·
在類定義之外定義;
·
使用類對(duì)象引用作參數(shù)。外部友元函數(shù)的作用域是所在類的類作用域友元函數(shù)不僅可以訪問(wèn)對(duì)象的公開(kāi)成員,而且可以訪問(wèn)對(duì)象的私有成員67友元函數(shù)是另一個(gè)類的成員函數(shù)友元函數(shù)作為一個(gè)類的成員函數(shù)時(shí),除應(yīng)當(dāng)在它所在的類定義中聲明之外,還應(yīng)當(dāng)在另一個(gè)類中聲明它的友元關(guān)係友元函數(shù)既可以引用本類對(duì)象的私有成員,這時(shí)毋須本類對(duì)象的引用參數(shù);還可以引用聲明它是友元的類對(duì)象中的私有成員,這時(shí)必須有友員類對(duì)象的引用參數(shù)一個(gè)類的成員函數(shù)作另一個(gè)類的友元函數(shù)時(shí),必須先定義它,而不僅僅是聲明它68友元關(guān)係classx{private:
成員1…………public:pf();……}classx{private:
成員1……public:pf();friendf();……}f();f();可以訪問(wèn)可以訪問(wèn)不可訪問(wèn)聲明友元關(guān)係可以訪問(wèn)可以訪問(wèn)69例1.3.2#include<iostream.h>#include<string.h>classGirl{char*name,*dial;public:Girl(char*n,char*d){name=newchar[strlen(n)+1];strcpy(name,n);dial=newchar[strlen(d)+1];strcpy(dial,d);}friendvoiddisp(Girl&);//聲明友元函數(shù)
~Girl(){deletename;deletedial;}};voiddisp(Girl&x)//定義外部友元函數(shù),不是定義成員函數(shù)
{cout<<"Girl\'snameis:"<<;<<",tel:"<<x.dial<<"\n";}main(void){Girle("Eluza",);
disp(e);//調(diào)用友元函數(shù)
}70C++程式開(kāi)發(fā)過(guò)程與環(huán)境C++程式開(kāi)發(fā)的基本過(guò)程C++的版本71C++程式開(kāi)發(fā)的基本過(guò)程電腦由硬體和軟體兩部分組成。硬體是電腦的物理組成,包括一些電路板、電子元件、接插件以及電源、外殼等。光有硬體,電腦還不能工作。電腦的工作是由程式控制的。程式是對(duì)電腦完成工作的成員函數(shù)的描述72一個(gè)程式的開(kāi)發(fā)需要經(jīng)過(guò)如下步驟1.分析問(wèn)題,建立問(wèn)題的模型2.表現(xiàn)模型3.程式的編譯(或解釋)與連接4.程式的測(cè)試與調(diào)試5.程式的維護(hù)73表現(xiàn)模型表現(xiàn)模型就是用一種符號(hào)系統(tǒng)——語(yǔ)言來(lái)描述模型?;蛘哒f(shuō)是用一種語(yǔ)言來(lái)寫(xiě)程式。這種語(yǔ)言就稱為程式設(shè)計(jì)語(yǔ)言程式設(shè)計(jì)語(yǔ)言分為低級(jí)語(yǔ)言(面向機(jī)器的語(yǔ)言)和高級(jí)語(yǔ)言兩大類高級(jí)程式設(shè)計(jì)語(yǔ)言可分為面向過(guò)程的程式設(shè)計(jì)語(yǔ)言和麵向?qū)ο蟮某淌皆O(shè)計(jì)語(yǔ)言兩大類74程式測(cè)試的正確指導(dǎo)思想以任何程式都存在錯(cuò)誤為前提測(cè)試的目的是找出程式中的錯(cuò)誤,而不是證明程式的正確為了保證測(cè)試成功,需要很好地設(shè)計(jì)一組測(cè)試用例,試運(yùn)行程式一般說(shuō)來(lái),測(cè)試不可能是完全的,成功的測(cè)試是能夠找出更多的錯(cuò)誤的測(cè)試75維護(hù)程式的原因
原來(lái)的程式?jīng)]有完全滿足用戶要求;用戶要求的改變;程式中遺留有錯(cuò)誤,在運(yùn)行中被發(fā)現(xiàn)76程式開(kāi)發(fā)的一般過(guò)程提出問(wèn)題分析問(wèn)題建立模型表現(xiàn)模型編輯根源程式編譯連接測(cè)試與調(diào)試運(yùn)行維護(hù)錯(cuò)誤目標(biāo)檔可執(zhí)行檔未發(fā)現(xiàn)錯(cuò)誤根源程式檔根源程式代碼模型問(wèn)題編輯錯(cuò)誤建模錯(cuò)誤分析錯(cuò)誤不再適宜77C++的版本C++是以C語(yǔ)言為基礎(chǔ)擴(kuò)充、發(fā)展起來(lái)的一種優(yōu)秀的通用程式設(shè)計(jì)語(yǔ)言。它保持了C語(yǔ)言的緊湊、靈活、高效和移植性好的優(yōu)點(diǎn),又吸收了一些著名程式設(shè)計(jì)語(yǔ)言的優(yōu)秀特性:從Simula中吸收了類的機(jī)制;從ALGOL68中吸收了運(yùn)算符重載、引用和在局部的任何地方聲明變數(shù);綜合了Ada的類屬和異常處理機(jī)制
演算法設(shè)計(jì)與程式結(jié)構(gòu)判斷與選擇結(jié)構(gòu)迴圈結(jié)構(gòu)常用演算法設(shè)計(jì)變數(shù)的存儲(chǔ)屬性多檔程式結(jié)構(gòu)判斷與選擇結(jié)構(gòu)關(guān)係運(yùn)算與邏輯運(yùn)算if…else結(jié)構(gòu)條件運(yùn)算符與條件運(yùn)算式elseif結(jié)構(gòu)
switch結(jié)構(gòu)關(guān)係運(yùn)算與邏輯運(yùn)算關(guān)係運(yùn)算符與關(guān)係運(yùn)算式邏輯運(yùn)算符與邏輯運(yùn)算式關(guān)係運(yùn)算符
<(小於)<=(小於等於)
>(大於)>=(大於等於)==等於)!=(不等於)關(guān)係運(yùn)算符特點(diǎn)關(guān)係運(yùn)算的結(jié)果為邏輯型“==”與“!=”兩種關(guān)係運(yùn)算符的優(yōu)先順序比其他關(guān)係運(yùn)算符的優(yōu)先順序別略低邏輯運(yùn)算符
&&(邏輯“與”)
||(邏輯“或”)?。ㄟ壿嫛胺恰保┻\(yùn)算符優(yōu)先順序比較優(yōu)先順序運(yùn)
算
符結(jié)合方向()後置++後置--→!前置++後置---*(間接引用)&(取地址)←*/%→+-…<<=>>===!=…&&||…←=+=-=*=/=%=
if…else結(jié)構(gòu)if…else結(jié)構(gòu)的基本形式為:
if(判斷運(yùn)算式)
語(yǔ)句1 else
語(yǔ)句2例程include<iostream.h>classThreeNumber{ intm1,m2,m3;public: voidInput3Integers();
voidGetMax();}; intmain(){ThreeNumbera;a.Input3Integers();a.GetMax();return0;}
兩個(gè)成員函數(shù)的實(shí)現(xiàn)voidThreeNumber::Input3Integers(){cout<<“Input3Integers:\n”;cin>>m1>>m2>>m3;}intThreeNumber::GetMax(){intmax;if(m1>m2) if(m1>m3) max=m1; else max=m3;else if(m2>m3) max=m2; else max=m3;cout<<“TheMaxintegeris:”<<max<<endl;}條件運(yùn)算符與條件運(yùn)算式條件運(yùn)算式的一般形式為:
e1?e2:e3
elseif結(jié)構(gòu)if(判斷運(yùn)算式1)
語(yǔ)句1elseif(運(yùn)算式2)
語(yǔ)句2…elseif(運(yùn)算式n)
語(yǔ)句nelse
語(yǔ)句n+1switch結(jié)構(gòu)
switch(開(kāi)關(guān)運(yùn)算式){case常量1:
語(yǔ)句表列
case常量2:
語(yǔ)句表列
…default:
語(yǔ)句表列
}
switch結(jié)構(gòu)描述例程voidCharacter::GetClass(){switch(mCh){ case'0':case'1':case'2':case'3':case'4':case'5':case'6':case'7':case'8':case'9':cout<<"\nIt'sadigitcharacter.";break;case'':case'\n':case'\t':cout<<"\nIt'sawhitecharacter.";break;default:cout<<"\nIt'salettercharacter.";break;}}迴圈結(jié)構(gòu)for結(jié)構(gòu)
while結(jié)構(gòu)與do…while結(jié)構(gòu)for結(jié)構(gòu)結(jié)構(gòu)的基本形式為:
for(運(yùn)算式1;運(yùn)算式2;運(yùn)算式3)
循環(huán)體高斯(Gauss)問(wèn)題#include<iostream.h>classGauss{ intmi;public: InputInteger(); GetGaussSum();};intmain(){ Gaussg1; g1.InputInteger(); g1.GetGaussSum(); return0;}voidGauss::InputInteger(){cout<<"Enteracharacter:\n";cin>>mi;}voidGauss::GetGaussSum(){inti,isum=0;for(i=1;i<=mi;i++)
isum+=i;cout<<"\nThesumis:"<<isum;}
for結(jié)構(gòu)的流程for(初始化運(yùn)算式;→判斷運(yùn)算式;←修正運(yùn)算式)↓”真”循環(huán)體進(jìn)入迴圈退出迴圈假while結(jié)構(gòu)while結(jié)構(gòu)的一般形式:
while(判斷運(yùn)算式)
循環(huán)體語(yǔ)句進(jìn)一步說(shuō)明運(yùn)算式是循環(huán)體語(yǔ)句能否進(jìn)行以及能否繼續(xù)的條件。也就是說(shuō),在進(jìn)入迴圈之前,先測(cè)試一次判斷運(yùn)算式,如果判斷運(yùn)算式為真(值不為0),則就進(jìn)入迴圈,開(kāi)始執(zhí)行循環(huán)體語(yǔ)句;以後每執(zhí)行完一次循環(huán)體語(yǔ)句,就再測(cè)試一次判斷運(yùn)算式,如果判斷運(yùn)算式還為“真”(值不為0),就繼續(xù)執(zhí)行循環(huán)體語(yǔ)句;如此重複,直到某一次循環(huán)體語(yǔ)句執(zhí)行完,判斷運(yùn)算式變?yōu)椤凹佟敝羋o…while結(jié)構(gòu)do…while結(jié)構(gòu)形式為:
do
循環(huán)體語(yǔ)句
while(判斷運(yùn)算式);進(jìn)一步說(shuō)明do…while結(jié)構(gòu)與while結(jié)構(gòu)非常相似,一點(diǎn)微小的區(qū)別僅在於while結(jié)構(gòu)是先判斷後執(zhí)行循環(huán)體,而do…while結(jié)構(gòu)是先執(zhí)行一次循環(huán)體再判斷。也就是說(shuō),do…while結(jié)構(gòu)最少要執(zhí)行循環(huán)體一次,而while結(jié)構(gòu)有可能一次也不執(zhí)行循環(huán)體常用演算法設(shè)計(jì)窮舉遞推模擬遞歸窮舉窮舉歸納是數(shù)學(xué)上最常用的方法之一它的基本思想是一一列舉各種可能進(jìn)行測(cè)試,從中找出符合條件的解電腦能夠?qū)崿F(xiàn)高速運(yùn)算,借迴圈結(jié)構(gòu)實(shí)現(xiàn)窮舉,比人工更為有效大獎(jiǎng)賽評(píng)分程式#include<iostream.h>classScore{ intmNumber_Adjudicator; //評(píng)委人數(shù)
public: Score(intiNum_Adj) { mNumber_Adjudicator=iNum_Adj; } voidGetResult(); //計(jì)算並給出結(jié)果};intmain(){ Scorem(15); //假定有15個(gè)評(píng)委
m.GetResult(); return0;}voidScore::GetResult(){ intiScore, //每個(gè)評(píng)委的給分
i, //臨時(shí)變數(shù)
max, //最高分
min; //最低分
max=0; //先假設(shè)當(dāng)前最大分為0 min=100; //先假設(shè)當(dāng)前最小分為最大分(100)
floatfSum=0; //均分
for(i=1;i<=mNumber_Adjudicator;i++){ cout<<"\n輸入第“
<<i<<“個(gè)分”; cin>>iScore; //輸入評(píng)委評(píng)分
fSum+=iScore; //計(jì)算總分
if(score>max)max=score; //篩選最高分
if(score<min)min=score; //篩選最低分
}cout<<"\n均分為"<<(fSum-max-min)/(mNumber_Adjudicator-2));}列印3~N中的素?cái)?shù)#include<iostream.h>classPrimer{ intmNumber; public: Primer(intn) { mNumber=n; } void GetPrimers();};intmain(){ Primer n(m); n.GetPrimers(); return0;}36塊磚,36人搬classRemoveBricks{ intiNumberOfPeople; intiNumberOfBrick; public: RemoveBrick(intiNumPeop,intiNumBrc)//構(gòu)造函數(shù)
{ iNumberOfPeople=iNumPeop; iNumberOfBrick=iNumBrc;} voidCalculate();};
intmain(){ BrickProblem rb(36,36);//用構(gòu)造函數(shù)創(chuàng)建對(duì)象並初始化
rb.Calculate(); //調(diào)用對(duì)象的成員函數(shù)進(jìn)行計(jì)算
return0;}
函數(shù)Calculate()#include<iostream.h>voidBrickProblem::Calculate(){cout<<"men*****women***children\n");intmen=0; //賦初值
while(men++<iNumberOfPeople/4) //修訂並判斷
{ intwomen=0; //賦初值
while(women++<iNumberOfPeople/3) //修訂並判斷
{intchildren;children=iNumberOfPeople–men-women;if(4*men+3*women+children/2==iNumberOfBrick) { cout.width(6); //設(shè)置輸出域?qū)?/p>
cout<<men<<women<<children;}}}}遞推遞推就是採(cǎi)用不斷由已知推出新值,直到求得解為止
求兩個(gè)非負(fù)整數(shù)的最大公因數(shù)#include<iostream.h
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 清潔能源未來(lái)太陽(yáng)能技術(shù)在辦公空間的應(yīng)用
- 子女就業(yè)申請(qǐng)書(shū)
- 電子游戲產(chǎn)品在線銷(xiāo)售平臺(tái)的發(fā)展趨勢(shì)研究
- 電機(jī)控制系統(tǒng)的先進(jìn)診斷方法研究
- 2025年度航空航天產(chǎn)業(yè)投資入股合同
- 支付申請(qǐng)書(shū)格式
- 互換性與技術(shù)測(cè)量知到智慧樹(shù)章節(jié)測(cè)試課后答案2024年秋青島恒星科技學(xué)院
- 調(diào)查取證申請(qǐng)書(shū)模板
- 2025年度戰(zhàn)略合作伙伴投票權(quán)委托協(xié)議
- 電子競(jìng)技行業(yè)的文化傳播與社會(huì)影響
- 機(jī)械基礎(chǔ) 第2版全書(shū)電子教案
- 歸檔文件整理規(guī)則
- 醫(yī)院輸血管理委員會(huì)工作總結(jié)
- 海淀高科技高成長(zhǎng)20強(qiáng)暨明日之星年度報(bào)告
- 不停電作業(yè)標(biāo)準(zhǔn)流程及表格
- (建筑電氣工程)電氣系統(tǒng)調(diào)試方案
- 2022年煤礦事故應(yīng)急救援演練方案
- 新人教版八年級(jí)下冊(cè)初中物理全冊(cè)課前預(yù)習(xí)單
- 第三章-隋唐佛教宗派的興盛與思想發(fā)展課件
- 中國(guó)典章制度ppt課件
- 高考古代詩(shī)歌鑒賞復(fù)習(xí)教案
評(píng)論
0/150
提交評(píng)論