C++培训材料.docx
《C++培训材料.docx》由会员分享,可在线阅读,更多相关《C++培训材料.docx(53页珍藏版)》请在冰豆网上搜索。
C++培训材料
一、类和对象(class&object)
面向对象编程:
利用对象的属性和方法来实现程序或者系统所需的功能;
非面向对象编程:
文件:
*.cpp、*.c;c++sourcefile;C++源代码文件(程序代码资源)
*.h;c++headfile;c++头文件;(定义,类型)
*.dsw工程工作区文件;
*.dsp工程文件
二、c++常用数据类型(DataTypes)与变量
整型:
intx;
长整型:
long;
单精度类型:
float
双精度类型:
double
逻辑型:
bool
字符类型:
char
字符串型:
CString
字节类型:
byte(0~255)
10e+5=10*105
TypeName
Bytes
OtherNames
RangeofValues
int
*
signed,
signedint
Systemdependent
unsignedint
*
unsigned
Systemdependent
__int8
1
char,
signedchar
–128to127
__int16
2
short,
shortint,
signedshortint
–32,768to32,767
__int32
4
signed,
signedint
–2,147,483,648to2,147,483,647
__int64
8
none
–9,223,372,036,854,775,808to9,223,372,036,854,775,807
char
1
signedchar
–128to127
unsignedchar
1
none
0to255
short
2
shortint,
signedshortint
–32,768to32,767
unsignedshort
2
unsignedshortint
0to65,535
long
4
longint,
signedlongint
–2,147,483,648to2,147,483,647
unsignedlong
4
unsignedlongint
0to4,294,967,295
enum
*
none
Sameasint
float
4
none
3.4E+/-38(7digits)
double
8
none
1.7E+/-308(15digits)
longdouble
10
none
1.2E+/-4932(19digits)
Ø数组:
类型数组名[数组大小]
(1)floatafRed[4]={0.0f,2.0f,3.0f,4.0f};
数组元素赋值:
afRed[2]=1024.568*2.0+3;
数组内存分配:
floatafRed[8]
(1)float*d=(float*)malloc(8*sizeof(float));
(2)float*d=newfloat[8]
(2)
三、基本语法
1.;///**/\n换行
2.函数
类型名函数名(参数〔类型名参数变量〕)
{
……
程序代码;
returnn;//返回值
}
longsum(inti)
{
longn=0;
for(intj=1;j<=i;j++)
{
n=n+j;
}
returnn;//返回值
}
3.语法:
运算:
+-*/=i++i—
sincostanatanabsfmod;
4.语句:
#include"math.h"//包含头文件
#definest100;//定义常数
return100;//返回值
循环:
for(intj=1;j<=i;j++)
{
n=n+j;
……
}
///////////////////////////////////////////////////////
intj=1;
do
{
n=n+j;
j++;
}while(j<=i);
///////////////////////////////////////////////////////
判断:
if(条件)
if(j!
=100&&i==100)
{
……
}
else
{
if(j>1001)
n=n+1;
else
n=n+2;
}
////////////switch///////////////////////////////////////////
switch(i)
{
case0:
n=1000;
break;
case1:
n=2000;
break;
case2:
n=2000;
break;
case3:
n=2000;
break;
default:
n=i;
break;
}
5、指针:
(1).指针变量:
类型名*变量名
int*I;
intmain(intargc,char*argv[])
{
intm;
intn;
sum(100,&m,&n);
longs1=m;
longs2=n;
//CStringss;
//s.format(
printf("从1加到100的奇数总和是:
%d\n从1加到100的偶数总和是:
%d\n",s1,s2);
return0;
}
voidsum(inti,int*s1,int*s2)//从1到i累加
{
*s1=0;
*s2=0;
for(intj=1;j<=i;j++)
{
if(fmod(j,2)==0)
*s1=*s1+j;
Return2;
else
*s2=*s2+j;
}
Return;
}
6.类与对象
#include"stdafx.h"
#include
classCat
{
public:
intGetAge();
intSetAge(intv);
voidMeow();
private:
intitsAge;
protected:
};
intCat:
:
GetAge()
{
returnitsAge;
}
intCat:
:
SetAge(intv)
{
itsAge=v;
return0;
}
voidCat:
:
Meow()
{
std:
:
cout<<"Meow.\n";
}
intmain(intargc,char*argv[])
{
Catwhitecat;
whitecat.SetAge(10);
whitecat.Meow();
std:
:
cout<<"whitecatisacatwhois.\n";
std:
:
cout<whitecat.Meow();
return0;
}
7.概念:
类:
对象:
指针:
第一章C++语言的组成部分
1.cout函数:
#include
std:
:
cout<<5/8;
std:
:
cout<<(float)5/8;
std:
:
cout<:
endl;
Øcin函数(输入)
intv;
std:
:
cin>>v;
2.名词空间Namespace:
简化代码
Usingstd:
:
cout;
Usingstd:
:
endl;
cout<cout<<5/8;
cout<<(float)5/8;
cout<Usingnamespacestd;
cout<cout<<5/8;
cout<<(float)5/8;
cout<3.注释
//或者/*与*/
第二章变量与常量
1.变量是存储信息的地方。
在内存地址中存储或者写入数据;
2.RAM(RandomaccessMemory,内存)随机存取存储区:
临时存储;最小单元:
byte
3.C++关键字(不能用之命名变量或者函数)
C++;
If;
While;
For;
Main;
4.变量定义:
intI;
i=-10;
unsignedinti;
i=-10;(错误)
IntI,j,k,l;
LongI,j,klongintI,j,k
ShortI,j,kshortintI,j,k
Long是Longint的简写;short是shortint的简写;
5.typedef自定义数据类型
typedefunsignedshortintUSSHORT;
USSHORTI,j,k;(等价于:
unsignedshortintI,j,k;)
6.short与long的回绕
shortI;
I=32767
32767
I++
-32768
I++
-32767
7.特殊字符:
\t
Tab键盘
\n
新行
\r
回车键
\b
回退
\f
换页
8.常数定义;(常数值不能更改)
#definestuperclass15;
或者:
constunsignedshortintstuperclass=15
9.枚举型常量(enum)
enumCOLOR{red,green,blue,white}
0,1,2,3
EnumCOLOR{red=100,green,blue=500,white}
100101500501
COLORmycolor;
Mycolor=red;
例:
intmain(intargc,char*argv[])
{
enumWEEKDAY{Sun,Mon,Tues,Wedn,Thur,Frid,Satur};
WEEKDAYmyday;
myday=Sun;
if(myday==Sun||myday==Satur)
printf("it'sweekend\n");
else
printf("backtowork!
\n");
return0;
}
第四章表达式与语句
1.避免给常数赋值
35=25;(错误)
35=I;(错误)
constintI=100;
I=101;(错误)
2.注意数据类型;
unsignedintI;
I=100;(正确)
I=-100;(错误)
3.交换变量值
inta=100;
intb=200;
inttemp=a;
a=b;
b=temp;
a=b;
b=a;
(错误)
inti,j;
j=100;
i=j++;
结果:
I=100;j=101
inti,j;
j=100;
i=++j;
结果:
I=101;j=101
4.表达式:
任何一个计算值的操作。
表达式总能返回一个值;
x=a+b;x==y;
5.复杂表达式
y=x=a+b
如果a=3,b=2,则:
x=5;y=5;
6.数学运算符
+-*/%(求余数,求模)
++--
5/3=1;(float)5/3=1.66666666
x+=2表示:
x=x+2
x-=2表示:
x=x-2
7.优先级
intn=3*6+2+5*4+3*(2*3+1)
8.关系运算符
a>b;a=b;a<=b;a==b;a!
=b
9.if语句else语句
inti=10,j;
if(i<=10)
{
if(i>5)
j=5;
else
j=i;
}
else
{
if(i>1000)
j=0;
else
j=i*2;
}
10.逻辑运算符
&&与||或!
非
if(a>=10&&a<=20);
if(a<=10||a>=20);
if(!
(a==10))
11.条件运算符(表达式1)?
表达式2:
表达式3
intk=(a>b)?
a:
b;(如a=10,b=15,责k=15)
第五章函数
1.什么是函数:
函数是能够对数据进行处理并返回一个结果的子程序。
包括内置函数和自定义函数;
2.局部变量与全局变量
#include"stdafx.h"
intadd(intv1,intv2,ints);//函数原型
intadd(intv1,intv2,int*s);//函数原型
intsum=0;//全局变量
intmain(intargc,char*argv[])
{
printf("HelloWorld!
\n");
///////////////////////////////////////////
printf("\n---------------------\n");
intvv=0;
intv=add(1000,250,vv);
printf("V:
%d\n",v);
printf("VV:
%d\n",vv);
///////////////////////////////////////////
printf("\n---------------------\n");
int*vv2=newint[1];
intv2=add(1000,250,vv2);
printf("V:
%d\n",v2);
printf("VV:
%d\n",*vv2);
///////////////////////////////////////////
printf("\n---------------------\n");
intvv3=0;
intv3=add(1000,250,&vv3);
printf("V:
%d\n",v3);
printf("VV:
%d\n",vv3);
printf("\n---------------------\n");
///////////////////////////////////////////
printf("sum:
%d\n",sum);
printf("\n---------------------\n");
return0;
}
intadd(intv1,intv2,ints)
{
s=v1+v2;
sum=s;//此处sum为全局变量
returns;
}
intadd(intv1,intv2,int*s)
{
*s=v1+v2;
intsum=*s;//此处sum为局部变量
return*s;
}
3.默认参数:
原型:
longchengfa(intn=5);
///////////////函数的默认参数//////////////////////////////////////
longchengfa(intn)
{
longv=1;
for(inti=1;i<=n;i++)
v=v*i;
returnv;
}
调用:
longt=chengfa();(结果为120)或者longt=chengfa(4);(结果为24)
4.函数重载:
同名函数定义多次;
doubleadd(doublev1,doublev2);//函数原型
intadd(intv1,intv2,ints);//函数原型
intadd(intv1,intv2,int*s);//函数原型
doubleadd(doublev1,doublev2)
{
returnv1+v2;
}
intadd(intv1,intv2,ints)
{
s=v1+v2;
sum=s;
returns;
}
intadd(intv1,intv2,int*s)
{
*s=v1+v2;
sum=*s;
return*s;
}
5.内嵌函数(避免跳转,从而提高程序执行效率)
inlineintAdd(intv1,intv2);//原型
intAdd(intv1,intv2)
{
returnv1+v2;
}
//Add为内嵌函数
6.递归
longChengfang(intv)//递归函数
{
if(v==1)
returnv;
else
return(v*Chengfang(v-1));
}
如:
v=5:
Chengfang(5)
=5*Chengfang(4)
=5*4*Chengfang(3)
=5*4*3*Chengfang
(2)
=5*4*3*2*Chengfang
(1)
=5*4*3*2*1
=120
第六章面向对象编程
1.类和对象
类:
抽象;
对象:
客观;
2.类的定义
#include"stdafx.h"
#include
classCat
{
public:
//类的共有成员方法
intGetAge();
intSetAge(intv);
voidMeow();
private:
//类的私有成员属性(成员变量)
intitsAge;
protected:
//保护类型
};
intCat:
:
GetAge()
{
returnitsAge;
}
intCat:
:
SetAge(intv)
{
itsAge=v;
return0;
}
voidCat:
:
Meow()
{
std:
:
cout<<"Meow.\n";
}
intmain(intargc,char*argv[])
{
Catwhitecat;//定义类的对象:
whitecat为Cat类的对象
whitecat.SetAge(10);
whitecat.Meow();
std:
:
cout<<"whitecatisacatwhois.\n";
std:
:
cout<whitecat.Meow();
return0;
}
3.构造函数与析构函数
4.成员函数const
第七章程序流程
1.循环:
goto语句
inti=0;
intv=0;
loop:
v=v+i;
i++;
if(i<5)
gotoloop;
2.while循环
intSum(intv)
{
inti=0;
intTotal=0;
while(i<=v)
{
if(i%2==0)
{
i++;
continue;//跳出本次循环,并继续下一次循环
}
if(i>10)
break;//退出循环、循环中止
Total=Total+i;
i++;
}
returnTotal;
}
3.do……while循环
longSum2(longv)
{
inti=0;
intTotal=0;
do
{
Total=Total+i;
i++;
}while(i<=v);
returnTotal;
}
4.for循环
for(inti=1;i<=10;i++)
{
for(intj=1;j<=20;j++)
{
……
}
}
for(intI=0,j=0;I<3;I++,j++)
{
std:
:
cout<<"I:
"<
"<
:
endl;
}
5.switch语句
intv,n;
……
switch(v)
{
case0:
n=1000;
break;
case1:
n=2000;
break;
case2:
n=3000;
break;
case3:
n=4000;
break;
default:
n=i;
break;
}
(如果v=2,则n=3000;如果v=1,则n=2000;……)
6.
7.
8.
第八章:
指针
(1).指针变量:
类型名*变量名
int*I;
intmain(intargc,char*argv[])
{
intm;
intn;
sum(100,&m,&n);
longs1=m;
longs2=n;
//CStringss;
//s.format(
printf("从1加到100的奇数总和是:
%d\n从1加到100的偶数总和是:
%d\n",s1,s2);
return0;
}
longsum(inti,int*s1,int*s2)//从1到i累加
{
*s1=0;
*s2=0;
for(intj=1;j<=i;j++)
{
if(fmod(j,2)==0)
*s1=*s1+j;
else
*s2=*s2+j;
}
return0;
}
2.指针运算符:
->
4.删除指针:
delete指针名;
int*I=newint;
deleteI;
5.内存泄漏
内存泄漏
迷途指针
正确处理方法1
正确处理方法2
int*i=newint;
*I=100;
i=newint;
*i=200;
int*i=newint;
*I=100;
deleteI;
*i=200;
int*i=newint;
*i=100;
*i=200;
int*i=newint;
*I=100;
deleteI;
i=newint;
*i=200;
6.const指针
一般指针
Const指针
指针常数
Cat*Red