C++入门介绍及使用手册
目 录
C++ 基础 3
第一章 C++语言的组成部分 10
第二章 变量与常量 11
第四章
达式与语句 14
第五章 函数 17
第六章 面向对象编程 20
第七章 程序流程 22
第八章: 指针 25
第九章 引用 27
第十章 高级函数 29
第11章 面向对象分析与设计 31
第12章 实现继承 32
第13章 管理数组和字符串 35
第14章 多态 36
第15章 特殊类和函数 37
第16章 高级继承 40
第17章 处理流 42
第18章 创建和使用名词空间 46
第19章
48
第20章 处理错误和异常 50
第21章 杂项内容 52
C++ 基础
一、类和对象(class & object)
面向对象编程:利用对象的属性和方法来实现程序或者系统所需的功能;
非面向对象编程:
文件:
*.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(0~255)
10e+5=10*105
? 数组: 类型 数组名[数组大小]
(1)float afRed[4] = {0.0f, 2.0f,3.0f, 4.0f};
数组元素赋值:afRed[2]= 1024.568*2.0+3;
数组内存分配:
float afRed[8]
(1)float *d=(float*) malloc(8*sizeof(float));
(2)float *d= new float[8]
(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++ i—
sin cos tan atan abs fmod ;
4.语句:
#include "math.h" //包含头文件
#define st 100; //定义常数
return 100;//返回值
循环:
for(int j=1;j<=i;j++)
{
n=n+j;
……
}
///////////////////////////////////////////////////////
int j=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)
{
case 0:
n= 1000;
break;
case 1:
n= 2000;
break;
case 2:
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的奇数总和是:%d\n从1加到100的偶数总和是:%d\n",s1,s2);
return 0;
}
void 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;
Return 2;
else
*s2=*s2+j;
}
Return;
}
6.类与对象
#include "stdafx.h"
#include
class Cat
{
public:
int GetAge();
int SetAge(int v);
void Meow();
private:
int itsAge;
protected:
};
int Cat::GetAge()
{
return itsAge;
}
int Cat::SetAge(int v)
{
itsAge=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<
std::cout<<5/8;
std::cout<<(float)5/8;
std::cout<>v;
2. 名词空间Namespace:简化代码
Using std::cout;
Using std::endl;
cout<< endl;
cout<<5/8;
cout<<(float)5/8;
cout<< endl;
Using namespace std;
cout<< endl;
cout<<5/8;
cout<<(float)5/8;
cout<< endl;
3. 注释
// 或者 /*与*/
第二章 变量与常量
1. 变量是存储信息的地方。在内存地址中存储或者写入数据;
2. RAM(Random access Memory,内存)随机存取存储区:临时存储;最小单元:byte
3. 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 long int I ,j,k
Short I,j,k short int I,j,k
Long 是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
32767
I++
-32768
I++
-32767
7. 特殊字符:
\t
Tab键盘
\n
新行
\r
回车键
\b
回退
\f
换页
8. 常数定义;(常数值不能更改)
#define stuperclass 15;
或者:const unsigned short int stuperclass =15
9. 枚举型常量(enum)
enum COLOR {red,green,blue,white}
0, 1, 2, 3
Enum COLOR {red=100,green,blue=500,white}
100 101 500 501
COLOR 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 || myday==Satur)
printf("it's weekend\n");
else
printf("back to work!\n");
return 0;
}
第四章 表达式与语句
1. 避免给常数赋值
35=25;(错误)
35=I; (错误)
const int I=100;
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 ; j=101
int i,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. 优先级
int n=3*6+2+5*4+3*(2*3+1)
8. 关系运算符
a>b; a=b; a<=b; a==b; a != b
9. if语句 else 语句
int i=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
int k= (a>b)?a:b; (如a=10 ,b=15 ,责k=15)
第五章 函数
1. 什么是函数:
函数是能够对数据进行处理并返回一个结果的子程序。
包括内置函数和自定义函数;
2. 局部变量与全局变量
#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:%d\n",v);
printf("VV:%d\n",vv);
///////////////////////////////////////////
printf("\n---------------------\n" );
int* vv2=new int[1];
int v2=add(1000,250,vv2);
printf("V:%d\n",v2);
printf("VV:%d\n",*vv2);
///////////////////////////////////////////
printf("\n---------------------\n" );
int vv3=0;
int v3=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" );
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++)
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;
}
int 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;
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
class Cat
{
public: //类的共有成员方法
int GetAge();
int SetAge(int v);
void Meow();
private: //类的私有成员属性(成员变量)
int itsAge;
protected: //保护类型
};
int Cat::GetAge()
{
return itsAge;
}
int Cat::SetAge(int v)
{
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<10)
break;//退出循环、循环中止
Total=Total+i;
i++;
}
return Total;
}
3. do……while循环
long Sum2(long v)
{
int i=0;
int Total=0;
do
{
Total=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:" <
4. 删除指针 : delete 指针名;
int * I=new int;
delete I;
5. 内存泄漏
内存泄漏
迷途指针
正确处理方法1
正确处理方法2
int *i=new int;
*I=100;
i=new int;
*i=200;
int *i=new int;
*I=100;
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 ->GetAge();
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 int[n];
// int * myArray=(int *)malloc(n*sizeof(int));//同样
// for(int i=0;iadd (10,20);//调用BosCat:: add() 结果=-10
BlackCat ->sum(10,20);//调用Cat:: sum() 结果=30
6. 私有继承
class BosCat:private Cat
{
public: