C++入門介紹及使用手冊(cè)_第1頁(yè)
C++入門介紹及使用手冊(cè)_第2頁(yè)
C++入門介紹及使用手冊(cè)_第3頁(yè)
C++入門介紹及使用手冊(cè)_第4頁(yè)
C++入門介紹及使用手冊(cè)_第5頁(yè)
已閱讀5頁(yè),還剩47頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、C+入門介紹及使用手冊(cè) 目 錄C+ 基礎(chǔ)3第一章 C+語(yǔ)言的組成部分10第二章 變量與常量11第四章 表達(dá)式與語(yǔ)句14第五章 函數(shù)17第六章 面向?qū)ο缶幊?0第七章 程序流程22第八章: 指針25第九章 引用27第十章 高級(jí)函數(shù)29第11章 面向?qū)ο蠓治雠c設(shè)計(jì)31第1章 實(shí)現(xiàn)繼承32第13章管理數(shù)組和字符串35第14章多態(tài)36第15章特殊類和函數(shù)37第16章 高級(jí)繼承40第17章 處理流42第18章 創(chuàng)建和使用名詞空間46第19章 模板48第20章 處理錯(cuò)誤和異常50第21章 雜項(xiàng)內(nèi)容52C+ 基礎(chǔ)一、類和對(duì)象(class & object)面向?qū)ο缶幊蹋豪脤?duì)象的屬性和方法來(lái)實(shí)現(xiàn)程序

2、或者系統(tǒng)所需的功能;非面向?qū)ο缶幊蹋何募?.cpp 、*.c ;c+ source file ; C+源代碼文件(程序代碼資源)*.h ;c+ head file ; c+頭文件;(定義,類型)*.dsw 工程工作區(qū)文件;*.dsp 工程文件二、c+常用數(shù)據(jù)類型(Data Types)與變量整型:int x;長(zhǎng)整型:long;單精度類型:float雙精度類型:double邏輯型:bool字符類型:char字符串型:CString字節(jié)類型:byte(0255)10e+5=10*105Ø 數(shù)組: 類型 數(shù)組名數(shù)組大小(1)float afRed4 = 0.0f, 2.0f,3.0f,

3、4.0f;數(shù)組元素賦值:afRed2= 1024.568*2.0+3;數(shù)組內(nèi)存分配:float afRed8(1)float *d=(float*) malloc(8*sizeof(float);(2)float *d= new float8(2)三、基本語(yǔ)法1. ; / /* */ n換行2. 函數(shù)類型名 函數(shù)名(參數(shù)類型名 參數(shù)變量) 程序代碼;return n;/返回值 long sum(int i) long n=0;for(int j=1;j<=i;j+) n=n+j; return n;/返回值3. 語(yǔ)法:運(yùn)算: + - * / i+ isin cos tan atan ab

4、s fmod ;4.語(yǔ)句:#include "math.h" /包含頭文件#define st 100; /定義常數(shù)return 100;/返回值循環(huán):for(int j=1;j<=i;j+) n=n+j;/int j=1;don=n+j;j+;while ( j <= i );/判斷:if (條件)if (j != 100 && i=100)elseif(j>1001)n=n+1;elsen=n+2;/ switch /switch(i)case 0: n= 1000;break;case 1: n= 2000;break;case 2:

5、 n= 2000;break;case 3: n= 2000;break;default: n= i;break;5、指針:(1).指針變量: 類型名* 變量名int* I;int main(int argc, char* argv)int m;int n;sum(100,&m,&n);long s1=m;long s2=n;/CString ss;/s.format(printf("從1加到100的奇數(shù)總和是:%dn從1加到100的偶數(shù)總和是:%dn",s1,s2);return 0;void sum(int i,int *s1,int *s2)/從1到i

6、累加 *s1=0;*s2=0;for(int j=1;j<=i;j+)if (fmod(j,2)=0)*s1=*s1+j; Return 2; else*s2=*s2+j;Return;6.類與對(duì)象#include "stdafx.h"#include <iostream>class Catpublic:int GetAge();int SetAge(int v);void Meow();private:int itsAge;protected:;int Cat:GetAge()return itsAge;int Cat:SetAge(int v)itsA

7、ge=v;return 0;void Cat:Meow()std:cout<<"Meow.n"int main(int argc, char* argv)Cat whitecat; whitecat.SetAge(10);whitecat.Meow();std:cout<<"whitecat is a cat who is .n"std:cout<<whitecat.itsAge<<" years old.n"whitecat.Meow();return 0;7.概念:類:對(duì)象:指針:第

8、一章 C+語(yǔ)言的組成部分1. cout函數(shù):#include <iostream>std:cout<<5/8;std:cout<<(float)5/8;std:cout<<std:endl;Ø cin函數(shù)(輸入)int v;std:cin>>v;2. 名詞空間Namespace:簡(jiǎn)化代碼Using std:cout;Using std:endl;cout<< endl;cout<<5/8;cout<<(float)5/8;cout<< endl;Using namespace

9、std;cout<< endl;cout<<5/8;cout<<(float)5/8;cout<< endl;3. 注釋/ 或者 /*與*/第二章 變量與常量1. 變量是存儲(chǔ)信息的地方。在內(nèi)存地址中存儲(chǔ)或者寫入數(shù)據(jù);2. RAM(Random access Memory,內(nèi)存)隨機(jī)存取存儲(chǔ)區(qū):臨時(shí)存儲(chǔ);最小單元:byte3. C+關(guān)鍵字(不能用之命名變量或者函數(shù))C+;If;While;For;Main;4. 變量定義:int I;i =-10;unsigned int i;i =-10;(錯(cuò)誤)Int I,j,k,l;Long I,j,k lo

10、ng int I ,j,kShort I,j,k short int I,j,kLong 是Long int 的簡(jiǎn)寫;short 是short int 的簡(jiǎn)寫;5. typedef自定義數(shù)據(jù)類型typedef unsigned short int USSHORT;USSHORT I,j,k; (等價(jià)于:unsigned short int I,j,k; )6. short與long的回繞short I;I=32767 32767I+-32768I+-327677. 特殊字符: tTab鍵盤n新行r回車鍵b回退f換頁(yè)8. 常數(shù)定義;(常數(shù)值不能更改)#define stuperclass 15;

11、或者:const unsigned short int stuperclass =159. 枚舉型常量(enum)enum COLOR red,green,blue,white 0, 1, 2, 3Enum COLOR red=100,green,blue=500,white 100 101 500 501COLOR mycolor;Mycolor=red;例:int main(int argc, char* argv)enum WEEKDAY Sun,Mon,Tues,Wedn,Thur,Frid,Satur; WEEKDAY myday; myday=Sun;if(myday=Sun |

12、myday=Satur)printf("it's weekendn");elseprintf("back to work!n");return 0;第四章 表達(dá)式與語(yǔ)句1. 避免給常數(shù)賦值35=25;(錯(cuò)誤)35I; (錯(cuò)誤)const int I100;I=101; (錯(cuò)誤)2. 注意數(shù)據(jù)類型;unsigned int I;I=100;(正確)I=-100;(錯(cuò)誤)3. 交換變量值int a=100;int b=200;int temp=a;a=b;b=temp;a=b;b=a;(錯(cuò)誤)int i,j;j=100; i=j+; 結(jié)果:I=100

13、 ; j=101 int i,j;j=100;i=+j;結(jié)果:I=101 ; j=1014. 表達(dá)式:任何一個(gè)計(jì)算值的操作。表達(dá)式總能返回一個(gè)值;xa+b; x=y; 5. 復(fù)雜表達(dá)式y(tǒng)=x=a+b如果a=3,b=2,則:x=5;y=5;6. 數(shù)學(xué)運(yùn)算符+ - * / %(求余數(shù),求模)+ -5/31 ; (float )5/3=1.66666666x+=2表示:x=x+2x-=2表示:x=x-27. 優(yōu)先級(jí) int n=3*6+2+5*4+3*(2*3+1)8. 關(guān)系運(yùn)算符a>b; a<b; a>=b; a<=b; a=b; a != b9. if語(yǔ)句 else 語(yǔ)句

14、 int i=10,j; if (i<=10)if (i>5)j=5;elsej=i;elseif (i>1000)j=0;elsej=i*2;10. 邏輯運(yùn)算符&&與 |或 !非if (a>=10 && a<=20);if (a<=10 | a>=20);if ( !(a=10) )11. 條件運(yùn)算符 (表達(dá)式1)?表達(dá)式2:表達(dá)式3int k= (a>b)?a:b; (如a=10 ,b=15 ,責(zé)k=15)第五章 函數(shù)1. 什么是函數(shù):函數(shù)是能夠?qū)?shù)據(jù)進(jìn)行處理并返回一個(gè)結(jié)果的子程序。包括內(nèi)置函數(shù)和自定義函數(shù);2

15、. 局部變量與全局變量#include "stdafx.h"int add(int v1,int v2,int s);/函數(shù)原型int add(int v1,int v2,int* s);/函數(shù)原型int sum=0;/全局變量int main(int argc, char* argv)printf("Hello World!n"); /printf("n-n" ); int vv=0; int v=add(1000,250,vv);printf("V:%dn",v); printf("VV:%dn&qu

16、ot;,vv); /printf("n-n" ); int* vv2=new int1; int v2=add(1000,250,vv2);printf("V:%dn",v2); printf("VV:%dn",*vv2); /printf("n-n" ); int vv3=0; int v3=add(1000,250,&vv3);printf("V:%dn",v3); printf("VV:%dn", vv3); printf("n-n" );

17、/printf("sum:%dn", sum); printf("n-n" ); return 0;int add(int v1,int v2,int s)s=v1+v2;sum=s; / 此處sum為全局變量return s;int add(int v1,int v2,int* s)*s=v1+v2;int sum=*s;/ 此處sum為局部變量return *s;3. 默認(rèn)參數(shù):原型:long chengfa(int n=5);/ 函數(shù)的默認(rèn)參數(shù) /long chengfa(int n )long v=1;for (int i=1;i<=n;i

18、+)v=v*i;return v;調(diào)用:long t =chengfa( ); (結(jié)果為120) 或者 long t =chengfa(4); (結(jié)果為24)4. 函數(shù)重載:同名函數(shù)定義多次;double add(double v1,double v2);/函數(shù)原型int add(int v1,int v2,int s);/函數(shù)原型int add(int v1,int v2,int* s);/函數(shù)原型double add(double v1,double v2) return v1+v2;int add(int v1,int v2,int s)s=v1+v2;sum=s;return s;in

19、t add(int v1,int v2,int* s)*s=v1+v2;sum=*s;return *s;5. 內(nèi)嵌函數(shù)(避免跳轉(zhuǎn),從而提高程序執(zhí)行效率)inline int Add(int v1,int v2);/原型int Add(int v1,int v2)return v1+v2;/ Add為內(nèi)嵌函數(shù)6. 遞歸long Chengfang(int v)/遞歸函數(shù)if (v=1)return v;elsereturn (v*Chengfang(v-1);如:v5:Chengfang(5)= 5* Chengfang(4)= 5*4*Chengfang(3)=5*4*3*Chengfang

20、(2)=5*4*3*2*Chengfang(1)=5*4*3*2*1=120第六章 面向?qū)ο缶幊?. 類和對(duì)象類:抽象;對(duì)象:客觀;2. 類的定義#include "stdafx.h"#include <iostream>class Catpublic: /類的共有成員方法 int GetAge();int SetAge(int v);void Meow();private: /類的私有成員屬性(成員變量)int itsAge;protected: /保護(hù)類型;int Cat:GetAge()return itsAge;int Cat:SetAge(int v)

21、itsAge=v;return 0;void Cat:Meow()std:cout<<"Meow.n"int main(int argc, char* argv)Cat whitecat; /定義類的對(duì)象:whitecat為Cat類的對(duì)象 whitecat.SetAge(10);whitecat.Meow();std:cout<<"whitecat is a cat who is .n"std:cout<<whitecat.itsAge<<" years old.n"whitecat.M

22、eow();return 0;3. 構(gòu)造函數(shù)與析構(gòu)函數(shù)4. 成員函數(shù)const第七章 程序流程1. 循環(huán):goto語(yǔ)句int i=0; int v=0;loop:v=v+i;i+;if (i<5) goto loop ;2. while循環(huán) int Sum(int v)int i=0;int Total=0;while (i<=v)if(i%2=0)i+;continue;/跳出本次循環(huán),并繼續(xù)下一次循環(huán)if(i>10)break;/退出循環(huán)、循環(huán)中止Total=Total+i;i+;return Total;3. dowhile循環(huán)long Sum2(long v)int

23、i=0;int Total=0;doTotal=Total+i;i+;while (i<=v);return Total;4. for 循環(huán)for(int i=1;i<=10;i+) for(int j=1;j<=20;j+)for (int I=0,j=0; I<3; I+,j+)std:cout<<"I:" <<i <<"j:" <<i <<std:endl;5. switch語(yǔ)句int v,n;switch(v)case 0: n= 1000;break;case

24、1: n= 2000;break;case 2: n=3000;break;case 3: n= 4000;break;default: n= i;break;(如果v=2,則n=3000; 如果v=1,則n=2000;)6.7.8.第八章: 指針(1).指針變量: 類型名* 變量名int * I;int main(int argc, char* argv)int m;int n;sum(100,&m,&n);long s1=m;long s2=n;/CString ss;/s.format(printf("從1加到100的奇數(shù)總和是:%dn從1加到100的偶數(shù)總和是

25、:%dn",s1,s2);return 0;long sum(int i,int *s1,int *s2)/從1到i累加 *s1=0;*s2=0;for(int j=1;j<=i;j+)if (fmod(j,2)=0)*s1=*s1+j; else*s2=*s2+j;return 0;2.指針運(yùn)算符: -> 4. 刪除指針 : delete 指針名; int * I=new int;delete I;5. 內(nèi)存泄漏內(nèi)存泄漏迷途指針正確處理方法1正確處理方法2int *i=new int;*I=100;i=new int;*i=200;int *i=new int;*I=1

26、00;delete I;*i=200;int *i=new int;*i=100;*i=200;int *i=new int;*I=100;delete I;i=new int;*i=200;6. const指針一般指針Const 指針指針常數(shù)Cat* Redcat=new Cat;int I= Redcat ->itsAge;int j= Redcat ->GetAge();Redcat ->SetAge(40); () Const Cat* Redcat =new Cat;int I= Redcat ->itsAge;int j= Redcat ->GetAg

27、e();Redcat ->SetAge(40); (錯(cuò)誤)Cat* const Redcat =new Cat;int I= Redcat ->itsAge;int j= Redcat ->GetAge();wh Redcat->SetAge(40); () (7. 應(yīng)用: 指針與數(shù)組 int n=10;int * myArray=new intn;/int * myArray=(int *)malloc(n*sizeof(int);/同樣/for(int i=0;i<n;i+)/ myArrayi = i;for( int i=0;i<10;i+)*myA

28、rray+=i; /等價(jià)于: *myArray = i;myArray+; myArray-=n;/ 讓指針位置返回指向數(shù)組第一個(gè)元素;for(i=0;i<10;i+)printf("myArray%d = %dn",i,myArrayi);/printf("myArray%d = %dn",i,*myArray+);第九章 引用1. 什么是引用?引用就是一個(gè)別名(目標(biāo)的別名).2. 引用的語(yǔ)法: 類型(空格)&(空格可有可無(wú))變量名正確錯(cuò)誤Int &I;Int & I;Int& I;Int &I,j int

29、 &I; int j;3. 引用的用法: int i=100; int &ii=i; ii =200 (則:i=200) i=200 (則:ii=200)4. 引用不能重新賦值 int i=100; int &ii=i; int k=200; ii=k;k=250;/后續(xù)K的變化不引起i和ii的變化;函數(shù)i的值ii的值k的值I=300300300-ii=350350350-K=250350350-ii=k250250250K=500250250500int i=100; int &ii=i;(ii值隨著I值變化,I=100;ii=100) I=150; (則I=

30、100;ii=100) int k=200;ii=k;( (ii值不隨著k值變化)( I與ii值變?yōu)?00)k=250;(I與ii值仍然是200) 5. 通過引用傳遞參數(shù)(可返回多個(gè)值)void AddAndSub(int v1,int v2, int &m,int &n)/引用的作用之一:從函數(shù)中返回值m = v1+v2;n = v1-v2; v1=100;/不能返回;return ;6. 傳遞const指針const Cat & Function(const Cat & WhiteCat)7.第十章 高級(jí)函數(shù)1. 重載成員函數(shù)同一個(gè)成員函數(shù)名稱,不同的定義和

31、作用;重載: 重新定義與一個(gè)已經(jīng)存在的函數(shù)名稱相同的函數(shù);2. 重載構(gòu)造函數(shù)class Catpublic:Cat()itsAge=100;/構(gòu)造函數(shù)Cat(int v)itsAge=v;/構(gòu)造函數(shù)重載 Cat();/析構(gòu)函數(shù) public:int GetAge();int SetAge(int v);void Meow();int add(int v1,int v2);double add(double v1,double v2);/重載成員函數(shù)add public:long sum(long v=10);/使用默認(rèn)值private:int itsAge;bool sex;protected

32、:;/Cat BlackCat; Cat BlackCat(50);3. 復(fù)制構(gòu)造函數(shù)Cat(const Cat &rCat)itsAge=rCat.itsAge; ;Ø & 的好處:不用創(chuàng)建臨時(shí)對(duì)象,所以提高效率;Ø const作用:使得rCat的數(shù)據(jù)不能被修改;/Cat(Cat rCat)itsAge=rCat.itsAge;應(yīng)用: Cat BlackCat;BlackCat. SetAge(100);Cat RedCat ( BlackCat ) ; /復(fù)制構(gòu)造函數(shù)4. 初始化對(duì)象class Catpublic:/Cat()itsAge=100;/構(gòu)造

33、函數(shù)Cat():itsAge(100);/初始化對(duì)象5. 運(yùn)算符重載Cat blackCat;void operator+()+itsAge;/重載運(yùn)算符+Cat operator+(const Cat & rcat2);/重載運(yùn)算符+Cat RedCat; RedCat+= blackCat;Cat Cat:operator +(const Cat & rcat2)Cat TmpCat; TmpCat.itsAge=itsAge+rcat2.itsAge; /重載運(yùn)算符+的應(yīng)用return TmpCat;6前綴和后綴運(yùn)算符重載const Cat &operator+(

34、); /前綴+,如: Cat BlackCat ;+BlackCatconst Cat &operator+(int); /后綴+,如: Cat BlackCat ;BlackCat+6. 類型轉(zhuǎn)換; Cat(int v)itsAge=v;Cat BlueCat=50; 或者: Cat BlueCat(50);operator int()return (int(itsAge);int iii=(int)BlueCat; 第11章 面向?qū)ο蠓治雠c設(shè)計(jì)1. UML (Unified Modeling Language,統(tǒng)一建模語(yǔ)言)2. 軟件開發(fā)過程:分析設(shè)計(jì)實(shí)現(xiàn)測(cè)試第1章 實(shí)現(xiàn)繼承1.

35、繼承與派生概念2. private與protected: (只在繼承時(shí)候有區(qū)別)Ø private成員只能在本類內(nèi)部才能訪問,派生類中不能訪問;Ø protected成員可以在派生類中訪問;3. 派生類向基類的構(gòu)造函數(shù)傳遞參數(shù)Dog:Dog(int Age):Mammal(Age)4. 調(diào)用被覆蓋的基類方法.語(yǔ)法:派生類對(duì)象名.基類名:被覆蓋的基類方法(參數(shù))。例:Dog Mydog;Mydog. Mammal:Move(2);/Mydog. Move(2);5. 虛函數(shù)、虛方法語(yǔ)法:Virtual 函數(shù)定義;通過基類對(duì)象指針,可以調(diào)用同一個(gè)函數(shù)名(虛函數(shù)名)而執(zhí)行的是不同

36、的子類的函數(shù),這就是虛函數(shù)最根本的用途。用處:class Catpublic:Cat()itsAge=100;/構(gòu)造函數(shù) Cat();/析構(gòu)函數(shù)public:virtual double add(double v1,double v2) return v1+v2; public:long sum(long v) return v1+v2;public:long cheng(int v1,int v2) return v1*v2;protected:int itsAge;/class BosCat:public Catpublic:double add(double v1,double v2)r

37、eturn v1-v2;long sum(long v) return v1-v2;/Cat*BlackCat =new BosCat;/多態(tài)BlackCat ->add (10,20);/調(diào)用BosCat: add() 結(jié)果-10BlackCat ->sum(10,20);/調(diào)用Cat: sum() 結(jié)果306. 私有繼承class BosCat:private Catpublic:double add(double v1,double v2)return v1-v2;long sum(long v) return v1-v2; 私有繼承后,基類的共有成員和保護(hù)成員都變成了派生類

38、的私有(private)成員,在類的外部,基類的所有成員不能被訪問;BosCat bsCat;BsCat. cheng(10,20);/不能調(diào)用7. 保護(hù)繼承class BosCat:protected Catpublic:double add(double v1,double v2)return v1-v2;long sum(long v) return v1-v2; 保護(hù)繼承后,基類的共有成員和保護(hù)成員都變成了派生類的保護(hù)類(protected)成員,在類的外部,基類的所有成員不能被訪問;第13章管理數(shù)組和字符串1. 指針?biāo)銛?shù)int * x=new int10;for (int i=0;i

39、<10;i+)xi=i;x+=5;int vvv=*x; /vvv=x 5;printf("v=*x=%d!n",vvv);int * x=new int10;for (int i=0;i<10;i+)*x+=i;x-=10;/回到第個(gè)元素x+=5; /指向第個(gè)元素int vvv=*x;/vvv=x 1+5;printf("v=*x=%d!n",vvv);2. 刪除數(shù)組delete x;刪除一個(gè)指針 :int * v; delete v;3. 重新分配內(nèi)存int * x=new int10;for (int i=0;i<10;i+)xi

40、=i;x=new int15;/原來(lái)的值將丟失例:int * y=new int10; for (int j=0;j<10;j+)yj=j;printf("v=*y=%d!n",y8);/8y=new int15; for (j=0;j<15;j+)yj=j+50;printf("v=*y=%d!n",y8);/584. 字符數(shù)組:char s; s=a;char string1 ="hohaiyangbiao" char string210;strcpy(string2,string1);strncpy(string2,

41、string1,3);strcat( string2, "strcpy " );CString s1=s2 + s3;第14章多態(tài)1. 多重繼承class Pegasus: public Horse, public BirdØ java與#不支持多重繼承;2. 純虛函數(shù)和抽象類.虛函數(shù): Virtual 函數(shù)返回類型 函數(shù)名稱(參數(shù)列表)純虛函數(shù)語(yǔ)法:Virtual 函數(shù)返回類型 函數(shù)名稱(參數(shù)列表)0;例:virtual void Draw()0;抽象類:包含一個(gè)或者多個(gè)純虛函數(shù)的類都是抽象類;抽象類注意事項(xiàng):n 不要?jiǎng)?chuàng)建這個(gè)類的對(duì)象;而應(yīng)該從其派生;n 務(wù)必覆

42、蓋從這個(gè)類繼承的純虛函數(shù)3. 抽象類的作用和應(yīng)用(使用方便,以不變應(yīng)萬(wàn)變):第15章特殊類和函數(shù)1. 靜態(tài)成員變量static“屬于類而不是屬于對(duì)象”。class Catpublic:Cat(int age):itsAge(age)HowManyCats+;/構(gòu)造函數(shù)Cat()itsAge=100;HowManyCats+;/構(gòu)造函數(shù)virtual Cat()HowManyCats-;/析構(gòu)函數(shù)public:int ID; static int HowManyCats;protected: int itsAge;Cat mm;int Cat:HowManyCats=0;int n= Cat:H

43、owManyCats;int main(int argc, char* argv)Cat * MyCats=new Cat10;Cat whiteCat(100);printf("HowManyCats:n %d n",Cat:HowManyCats); return 0;2. 靜態(tài)成員函數(shù);class Catpublic:Cat(int age):itsAge(age)HowManyCats+;/構(gòu)造函數(shù)Cat()itsAge=100;HowManyCats+;/構(gòu)造函數(shù)virtual Cat()HowManyCats-;/析構(gòu)函數(shù)static int GetHowMan

44、y()return HowManyCats; ;public:int ID; static int HowManyCats;protected: int itsAge;int Cat:HowManyCats=0;int main(int argc, char* argv)Cat * MyCats=new Cat10;Cat whiteCat(100);printf("HowManyCats:n %d n",Cat:GetHowMany();return 0;注: 靜態(tài)成員函數(shù)不能取決于非靜態(tài)成員數(shù)據(jù);如: static int GetHowMany()return itsA

45、ge;(編譯錯(cuò)誤)3. 函數(shù)指針(以不變應(yīng)萬(wàn)變)語(yǔ)法:返回類型 (* 函數(shù)指針名稱)(參數(shù)列表)void Cube(int & w, int & h)return w*h; /函數(shù)void (* pFunc) (int & , int &);/函數(shù)指針定義和語(yǔ)法pFunc= Cube; /給函數(shù)指針指定函數(shù),注意函數(shù)結(jié)構(gòu)要一致/pFunc= Circle;pFunc(ValOne,ValTwo);/通過函數(shù)指針調(diào)用函數(shù)pFunc(10,20)等價(jià)于Cube(10,20);4. 函數(shù)指針數(shù)組void (* pFuncn) (int & , int &

46、;);/ 函數(shù)指針數(shù)組定義和語(yǔ)法pFunc i = Cube;/給函數(shù)指針指定函數(shù)pFunc i (ValOne,ValTwo);/通過函數(shù)指針調(diào)用函數(shù)5. typedef用于函數(shù)指針 (作用:代碼易讀)typedef void (* VPF) (int & , int &);/定義名稱為VPF的函數(shù)指針;int main()VPF pFunc; /類似于 int I;pFunc= Cube;6. 成員函數(shù)指針(類似)Cat RedCat;void (* pFuncn) (int & , int &);pFunc= RedCat.add;int v=pFunc(

47、10 , 20); / int v= RedCat.add (10 , 20);第16章 高級(jí)繼承1. 聚合類的成員可以是其它類的對(duì)象,稱為聚合;2. 添加友元類A類B類Class Apublic: friend Class B;Public: Setvv()private: int n;protected: B yy;Class BPublic:private:int add(a->n+=1;);protected:A* a;則:B類可以訪問A內(nèi)的任何成員數(shù)據(jù)和成員函數(shù)(包括私有的);3. 友元函數(shù)class Catpublic:Cat():itsAge(100);/初始化對(duì)象Cat(int v)itsAge=v;/構(gòu)造函數(shù)重載 Cat(const Cat &rCat)itsAge=rCat.itsAge;/復(fù)制構(gòu)造函數(shù) Cat();/析構(gòu)函數(shù)public:int GetAge()return itsAge;int SetAge(int v)itsAge=v;public:friend int Add(C

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論