




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C+入门介绍及使用手册 目 录C+ 基础3第一章 C+语言的组成部分10第二章 变量与常量11第四章 表达式与语句14第五章 函数17第六章 面向对象编程20第七章 程序流程22第八章: 指针25第九章 引用27第十章 高级函数29第11章 面向对象分析与设计31第1章 实现继承32第13章管理数组和字符串35第14章多态36第15章特殊类和函数37第16章 高级继承40第17章 处理流42第18章 创建和使用名词空间46第19章 模板48第20章 处理错误和异常50第21章 杂项内容52C+ 基础一、类和对象(class & object)面向对象编程:利用对象的属性和方法来实现程序
2、或者系统所需的功能;非面向对象编程:文件:*.cpp 、*.c ;c+ source file ; C+源代码文件(程序代码资源)*.h ;c+ head file ; c+头文件;(定义,类型)*.dsw 工程工作区文件;*.dsp 工程文件二、c+常用数据类型(Data Types)与变量整型:int x;长整型:long;单精度类型:float双精度类型:double逻辑型:bool字符类型:char字符串型:CString字节类型:byte(0255)10e+5=10*105Ø 数组: 类型 数组名数组大小(1)float afRed4 = 0.0f, 2.0f,3.0f,
3、4.0f;数组元素赋值:afRed2= 1024.568*2.0+3;数组内存分配:float afRed8(1)float *d=(float*) malloc(8*sizeof(float);(2)float *d= new float8(2)三、基本语法1. ; / /* */ n换行2. 函数类型名 函数名(参数类型名 参数变量) 程序代码;return n;/返回值 long sum(int i) long n=0;for(int j=1;j<=i;j+) n=n+j; return n;/返回值3. 语法:运算: + - * / i+ isin cos tan atan ab
4、s fmod ;4.语句:#include "math.h" /包含头文件#define st 100; /定义常数return 100;/返回值循环: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的奇数总和是:%dn从1加到100的偶数总和是:%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.类与对象#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.概念:类:对象:指针:第
8、一章 C+语言的组成部分1. cout函数:#include <iostream>std:cout<<5/8;std:cout<<(float)5/8;std:cout<<std:endl;Ø cin函数(输入)int v;std:cin>>v;2. 名词空间Namespace:简化代码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. 变量是存储信息的地方。在内存地址中存储或者写入数据;2. RAM(Random access Memory,内存)随机存取存储区:临时存储;最小单元:byte3. C+关键字(不能用之命名变量或者函数)C+;If;While;For;Main;4. 变量定义:int I;i =-10;unsigned int i;i =-10;(错误)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 的简写;short 是short int 的简写;5. typedef自定义数据类型typedef unsigned short int USSHORT;USSHORT I,j,k; (等价于:unsigned short int I,j,k; )6. short与long的回绕short I;I=32767 32767I+-32768I+-327677. 特殊字符: tTab键盘n新行r回车键b回退f换页8. 常数定义;(常数值不能更改)#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;第四章 表达式与语句1. 避免给常数赋值35=25;(错误)35I; (错误)const int I100;I=101; (错误)2. 注意数据类型;unsigned int I;I=100;(正确)I=-100;(错误)3. 交换变量值int a=100;int b=200;int temp=a;a=b;b=temp;a=b;b=a;(错误)int i,j;j=100; i=j+; 结果:I=100
13、 ; j=101 int i,j;j=100;i=+j;结果:I=101 ; j=1014. 表达式:任何一个计算值的操作。表达式总能返回一个值;xa+b; x=y; 5. 复杂表达式y=x=a+b如果a=3,b=2,则:x=5;y=5;6. 数学运算符+ - * / %(求余数,求模)+ -5/31 ; (float )5/3=1.66666666x+=2表示:x=x+2x-=2表示:x=x-27. 优先级 int n=3*6+2+5*4+3*(2*3+1)8. 关系运算符a>b; a<b; a>=b; a<=b; a=b; a != b9. if语句 else 语句
14、 int i=10,j; if (i<=10)if (i>5)j=5;elsej=i;elseif (i>1000)j=0;elsej=i*2;10. 逻辑运算符&&与 |或 !非if (a>=10 && a<=20);if (a<=10 | a>=20);if ( !(a=10) )11. 条件运算符 (表达式1)?表达式2:表达式3int k= (a>b)?a:b; (如a=10 ,b=15 ,责k=15)第五章 函数1. 什么是函数:函数是能够对数据进行处理并返回一个结果的子程序。包括内置函数和自定义函数;2
15、. 局部变量与全局变量#include "stdafx.h"int add(int v1,int v2,int s);/函数原型int add(int v1,int v2,int* s);/函数原型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. 默认参数:原型:long chengfa(int n=5);/ 函数的默认参数 /long chengfa(int n )long v=1;for (int i=1;i<=n;i
18、+)v=v*i;return v;调用:long t =chengfa( ); (结果为120) 或者 long t =chengfa(4); (结果为24)4. 函数重载:同名函数定义多次;double add(double v1,double v2);/函数原型int add(int v1,int v2,int s);/函数原型int add(int v1,int v2,int* s);/函数原型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. 内嵌函数(避免跳转,从而提高程序执行效率)inline int Add(int v1,int v2);/原型int Add(int v1,int v2)return v1+v2;/ Add为内嵌函数6. 递归long Chengfang(int v)/递归函数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第六章 面向对象编程1. 类和对象类:抽象;对象:客观;2. 类的定义#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)
21、itsAge=v;return 0;void Cat:Meow()std:cout<<"Meow.n"int main(int argc, char* argv)Cat whitecat; /定义类的对象:whitecat为Cat类的对象 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. 构造函数与析构函数4. 成员函数const第七章 程序流程1. 循环:goto语句int i=0; int v=0;loop:v=v+i;i+;if (i<5) goto loop ;2. while循环 int Sum(int v)int i=0;int Total=0;while (i<=v)if(i%2=0)i+;continue;/跳出本次循环,并继续下一次循环if(i>10)break;/退出循环、循环中止Total=Total+i;i+;return Total;3. dowhile循环long Sum2(long v)int
23、i=0;int Total=0;doTotal=Total+i;i+;while (i<=v);return Total;4. for 循环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语句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的奇数总和是:%dn从1加到100的偶数总和是
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.指针运算符: -> 4. 删除指针 : delete 指针名; int * I=new int;delete I;5. 内存泄漏内存泄漏迷途指针正确处理方法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 指针指针常数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); (错误)Cat* const Redcat =new Cat;int I= Redcat ->itsAge;int j= Redcat ->GetAge();wh Redcat->SetAge(40); () (7. 应用: 指针与数组 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; /等价于: *myArray = i;myArray+; myArray-=n;/ 让指针位置返回指向数组第一个元素;for(i=0;i<10;i+)printf("myArray%d = %dn",i,myArrayi);/printf("myArray%d = %dn",i,*myArray+);第九章 引用1. 什么是引用?引用就是一个别名(目标的别名).2. 引用的语法: 类型(空格)&(空格可有可无)变量名正确错误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;/后续K的变化不引起i和ii的变化;函数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值变为200)k=250;(I与ii值仍然是200) 5. 通过引用传递参数(可返回多个值)void AddAndSub(int v1,int v2, int &m,int &n)/引用的作用之一:从函数中返回值m = v1+v2;n = v1-v2; v1=100;/不能返回;return ;6. 传递const指针const Cat & Function(const Cat & WhiteCat)7.第十章 高级函数1. 重载成员函数同一个成员函数名称,不同的定义和
31、作用;重载: 重新定义与一个已经存在的函数名称相同的函数;2. 重载构造函数class Catpublic:Cat()itsAge=100;/构造函数Cat(int v)itsAge=v;/构造函数重载 Cat();/析构函数 public:int GetAge();int SetAge(int v);void Meow();int add(int v1,int v2);double add(double v1,double v2);/重载成员函数add public:long sum(long v=10);/使用默认值private:int itsAge;bool sex;protected
32、:;/Cat BlackCat; Cat BlackCat(50);3. 复制构造函数Cat(const Cat &rCat)itsAge=rCat.itsAge; ;Ø & 的好处:不用创建临时对象,所以提高效率;Ø const作用:使得rCat的数据不能被修改;/Cat(Cat rCat)itsAge=rCat.itsAge;应用: Cat BlackCat;BlackCat. SetAge(100);Cat RedCat ( BlackCat ) ; /复制构造函数4. 初始化对象class Catpublic:/Cat()itsAge=100;/构造
33、函数Cat():itsAge(100);/初始化对象5. 运算符重载Cat blackCat;void operator+()+itsAge;/重载运算符+Cat operator+(const Cat & rcat2);/重载运算符+Cat RedCat; RedCat+= blackCat;Cat Cat:operator +(const Cat & rcat2)Cat TmpCat; TmpCat.itsAge=itsAge+rcat2.itsAge; /重载运算符+的应用return TmpCat;6前缀和后缀运算符重载const Cat &operator+(
34、); /前缀+,如: Cat BlackCat ;+BlackCatconst Cat &operator+(int); /后缀+,如: Cat BlackCat ;BlackCat+6. 类型转换; Cat(int v)itsAge=v;Cat BlueCat=50; 或者: Cat BlueCat(50);operator int()return (int(itsAge);int iii=(int)BlueCat; 第11章 面向对象分析与设计1. UML (Unified Modeling Language,统一建模语言)2. 软件开发过程:分析设计实现测试第1章 实现继承1.
35、继承与派生概念2. private与protected: (只在继承时候有区别)Ø private成员只能在本类内部才能访问,派生类中不能访问;Ø protected成员可以在派生类中访问;3. 派生类向基类的构造函数传递参数Dog:Dog(int Age):Mammal(Age)4. 调用被覆盖的基类方法.语法:派生类对象名.基类名:被覆盖的基类方法(参数)。例:Dog Mydog;Mydog. Mammal:Move(2);/Mydog. Move(2);5. 虚函数、虚方法语法:Virtual 函数定义;通过基类对象指针,可以调用同一个函数名(虚函数名)而执行的是不同
36、的子类的函数,这就是虚函数最根本的用途。用处:class Catpublic:Cat()itsAge=100;/构造函数 Cat();/析构函数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;/多态BlackCat ->add (10,20);/调用BosCat: add() 结果-10BlackCat ->sum(10,20);/调用Cat: sum() 结果306. 私有继承class BosCat:private Catpublic:double add(double v1,double v2)return v1-v2;long sum(long v) return v1-v2; 私有继承后,基类的共有成员和保护成员都变成了派生类
38、的私有(private)成员,在类的外部,基类的所有成员不能被访问;BosCat bsCat;BsCat. cheng(10,20);/不能调用7. 保护继承class BosCat:protected Catpublic:double add(double v1,double v2)return v1-v2;long sum(long v) return v1-v2; 保护继承后,基类的共有成员和保护成员都变成了派生类的保护类(protected)成员,在类的外部,基类的所有成员不能被访问;第13章管理数组和字符串1. 指针算数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;/回到第个元素x+=5; /指向第个元素int vvv=*x;/vvv=x 1+5;printf("v=*x=%d!n",vvv);2. 删除数组delete x;删除一个指针 :int * v; delete v;3. 重新分配内存int * x=new int10;for (int i=0;i<10;i+)xi
40、=i;x=new int15;/原来的值将丢失例: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. 字符数组: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章多态1. 多重继承class Pegasus: public Horse, public BirdØ java与#不支持多重继承;2. 纯虚函数和抽象类.虚函数: Virtual 函数返回类型 函数名称(参数列表)纯虚函数语法:Virtual 函数返回类型 函数名称(参数列表)0;例:virtual void Draw()0;抽象类:包含一个或者多个纯虚函数的类都是抽象类;抽象类注意事项:n 不要创建这个类的对象;而应该从其派生;n 务必覆
42、盖从这个类继承的纯虚函数3. 抽象类的作用和应用(使用方便,以不变应万变):第15章特殊类和函数1. 静态成员变量static“属于类而不是属于对象”。class Catpublic:Cat(int age):itsAge(age)HowManyCats+;/构造函数Cat()itsAge=100;HowManyCats+;/构造函数virtual Cat()HowManyCats-;/析构函数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. 静态成员函数;class Catpublic:Cat(int age):itsAge(age)HowManyCats+;/构造函数Cat()itsAge=100;HowManyCats+;/构造函数virtual Cat()HowManyCats-;/析构函数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;注: 静态成员函数不能取决于非静态成员数据;如: static int GetHowMany()return itsA
45、ge;(编译错误)3. 函数指针(以不变应万变)语法:返回类型 (* 函数指针名称)(参数列表)void Cube(int & w, int & h)return w*h; /函数void (* pFunc) (int & , int &);/函数指针定义和语法pFunc= Cube; /给函数指针指定函数,注意函数结构要一致/pFunc= Circle;pFunc(ValOne,ValTwo);/通过函数指针调用函数pFunc(10,20)等价于Cube(10,20);4. 函数指针数组void (* pFuncn) (int & , int &
46、;);/ 函数指针数组定义和语法pFunc i = Cube;/给函数指针指定函数pFunc i (ValOne,ValTwo);/通过函数指针调用函数5. typedef用于函数指针 (作用:代码易读)typedef void (* VPF) (int & , int &);/定义名称为VPF的函数指针;int main()VPF pFunc; /类似于 int I;pFunc= Cube;6. 成员函数指针(类似)Cat RedCat;void (* pFuncn) (int & , int &);pFunc= RedCat.add;int v=pFunc(
47、10 , 20); / int v= RedCat.add (10 , 20);第16章 高级继承1. 聚合类的成员可以是其它类的对象,称为聚合;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内的任何成员数据和成员函数(包括私有的);3. 友元函数class Catpublic:Cat():itsAge(100);/初始化对象Cat(int v)itsAge=v;/构造函数重载 Cat(const Cat &rCat)itsAge=rCat.itsAge;/复制构造函数 Cat();/析构函数public:int GetAge()return itsAge;int SetAge(int v)itsAge=v;public:friend int Add(C
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 培训行业品牌推广策略计划
- 2024年西安市临潼区人民医院招聘笔试真题
- 金融行业保安工作的综合分析与建议计划
- 深度剖析前后端分离架构试题及答案
- 数据分析在仓库中的应用计划
- 2024年湖南省数据局遴选公务员笔试真题
- 2025年软件设计师进阶试题及答案工具
- 个人能力评估与提升的月度方案计划
- 2025年软考设计师重点试题及答案
- 2025软件设计师考试核心试题及答案
- 2024年北京普通高中学业水平等级性考试化学试题及答案
- 住家护工聘用合同协议书
- 平面向量的基本定理(说课)
- 人教版PEP英语3-6年级全部单词默写表格以及背诵版本
- 2024年新课标高考化学真题试题(原卷版+含解析)
- 《一起长大的玩具》整本书阅读(教学设计)统编版语文二年级下册
- 2024公需科目:数字经济与创新驱动发展题库
- 汽车租赁价格动态调整策略研究
- 湖北省武汉市江汉区2023-2024学年七年级下学期期末数学试题
- 专题04语法填空
- DZ∕T 0270-2014 地下水监测井建设规范
评论
0/150
提交评论