C++学习要点完全版.docx

上传人:b****2 文档编号:12876904 上传时间:2023-04-22 格式:DOCX 页数:157 大小:351.80KB
下载 相关 举报
C++学习要点完全版.docx_第1页
第1页 / 共157页
C++学习要点完全版.docx_第2页
第2页 / 共157页
C++学习要点完全版.docx_第3页
第3页 / 共157页
C++学习要点完全版.docx_第4页
第4页 / 共157页
C++学习要点完全版.docx_第5页
第5页 / 共157页
点击查看更多>>
下载资源
资源描述

C++学习要点完全版.docx

《C++学习要点完全版.docx》由会员分享,可在线阅读,更多相关《C++学习要点完全版.docx(157页珍藏版)》请在冰豆网上搜索。

C++学习要点完全版.docx

C++学习要点完全版

目录

1.基本知识4

(1)C语言的关键字4

(2)C语言的标识符4

(3)C语言注释4

(4)C语言基本数据类型4

(5)C语言的变量5

(6)C语言的常量5

(7)简单的输入输出6

(8)C++运算符和表达式(以优先级排列)6

(9)C++数据类型转化8

2.C++的控制语句8

(1)选择结构8

(2)循环结构9

(3)break语句9

(4)continue语句10

(5)goto语句10

3.C++数组11

(1)数组的定义与初始化11

1)定义数组11

2)字符数组和字符串11

(2)指针12

1)定义和使用指针12

2)指针和数组14

3)数组指针与指针数组15

(3)使用操作符new和delete进行动态储存分配15

1)创建动态变量15

2)创建动态数组16

3)释放动态创建的变量16

4)释放动态创建的数组16

(4)引用的定义与使用16

4.枚举和结构16

(1)枚举16

(2)结构17

(3)typedef的用法17

(4)指针与结构18

5.定义和调用函数19

(1)定义函数:

19

(2)函数的调用20

(3)传递参数20

(4)局部变量和全局变量21

(5)内联函数21

(6)参数的默认值21

(7)可变参数22

(8)作用域22

1)块作用域22

2)文件作用域23

3)函数原型作用域24

4)程序运行期的存储区域24

(9)储存类24

1)静态局部变量24

2)静态全局变量25

3)extern变量26

(10)编译预处理26

(11)指针函数27

6.C++的一些函数28

第九章类和对象29

9.1类29

9.1.1类的定义29

9.1.2类成员的可见性29

9.1.3类的数据成员29

9.1.4类的成员函数30

9.2对象32

9.2.1对象的创建32

9.2.2访问对象的成员(与结构相似)32

9.3this指针33

第10章构造函数与析构函数33

10.1构造函数33

10.2析构函数34

10.3拷贝构造函数与单参构造函数34

10.3.1拷贝构造函数34

10.3.2赋值操作函数34

10.3.3单参构造函数35

10.4复合对象与成员对象36

10.5对象数组36

10.6静态成员39

10.6.1静态数据成员39

10.6.2静态成员函数40

10.7const和volatile修饰符40

10.7.1const修饰符40

10.7.2volatile修饰符40

10.8指针成员40

10.9引用成员44

10.10类成员的指针48

10.10.1数据成员的指针48

第11章类的继承49

11.1继承与派生49

11.1.1基类与派生类49

11.1.2派生类的定义与构成49

11.1.3继承方式与访问控制49

11.3.1多继承造成的二义性55

11.3.2支配规则55

11.4虚基类56

11.4.1共同基类造成的二义性56

11.5子类型关系57

11.6虚函数58

11.6.1定义和使用58

11.6.2成员函数中调用虚函数59

11.6.3构造函数中调用虚函数60

11.6.4虚析构函数60

11.6.5纯虚函数与抽象类60

第十二章运算符重载62

12.1一般运算符重载62

12.1.1运算符重载函数62

12.1.2双目运算符的重载62

12.1.3单目运算符的重载63

12.2用友元函数实现运算符重载65

12.3特殊运算符的重载67

12.3.1赋值操作函数67

12.3.2类型转换函数67

第十三章模板68

13.1模板的概念68

13.2函数模板68

13.2.2实例化68

文件专题69

1.文件的概念69

1.169

1.270

1.3文件和文件流70

2.文件的使用70

2.170

2.2文件处理的一般过程71

2.3文件的打开与关闭71

2.3.1打开文件71

2.3.2关闭文件74

3.编程实践74

3.1文本文件的使用74

3.3文件的随机访问75

4.77

4.1文本文用件的使用77

4.2二进制文件的使用78

1.基本知识

(1)C语言的关键字

autoboolbreak

casecatchcharclassconstconst_castcontinue

defaultdeletedodoubledynamic_castelseenumexplicitextern

falsefloatforfriend

gotoifinlineint

longmutablenamespacenew

operatorprivateprotectedpublic

registerreinterpret_castreturn

shortsignedsizeofstaticstatic_caststructswitch

templatethisthrowtruetrytypedeftypeidtypename

unionunsignedusing

virtualvoidvolatile

while

(2)C语言的标识符

第一个字符必须是大小写英文字母或下划线;由大小写英文字母,数字和下划线组成;不能与C++关键字相同。

C++关键字区分大小写。

(3)C语言注释

//j是一个全局变量

/*j是一个全局变量*/

(4)C语言基本数据类型

数据类型

类型名

字节长度

取值范围

bool

布尔型

1

true,false

char

字符型

1

-128~127

[signed]char

有符号字符型

1

-128~127

unsignedchar

无符号字符型

1

0~255

short[int]

有符号短整型

2

-32768~32767

[signed]short[int]

有符号短整型

2

-32768~32767

unsignedshort[int]

无符号短整型

2

0~65535

int

有符号整型

4

-2147483648~2147483647

[signed]int

有符号整型

4

-2147483648~2147483647

unsignedint

无符号整型

4

0~4294967295

long[int]

长整型

4

-2147483648~2147483647

[signed]long[int]

有符号长整型

4

-2147483648~2147483647

unsignedlong[int]

无符号长整型

4

0~4294967295

float

单精度浮点值

4

double

双精度浮点值

8

longdouble

长双精型

8

(5)C语言的变量

定义变量实例:

inta,b,c

doublea,b=100

(6)C语言的常量

①数值常量:

(1)整型常量

整型常量的数据类型默认为int型,后加字母后缀L(或l)表示长整型;后加字母U(或u)表示无符号整型。

(2)浮点常量

分为一般形式的浮点常量和指数形式的浮点常量。

默认为double型,后加字母f或F,将其转化为float型。

(3)字符常量和字符串常量

字符常量是以单引号扩住的单个字符,如‘a’、’G’。

字符串常量以双引号扩住如“Helloworld”、”i=”

(4)布尔常量True或False

转义字符的C++编码

ASCII码值

字符名称

\?

63

问号

\\

92

反斜杠

\’

39

单引号

\”

34

双引号

\0

0

空字符,字符串结束符

\a

7

响铃

\b

8

退格

\f

12

换页

\n

10

换行符

\ooo

1~3位八进制数

\r

13

回车

\t

9

水平制表符

\v

11

垂直制表符

\xhh

 

1~2位十六进制数

对于int和short这样的整形数据,可以使用控制符改变它们的输出进制:

cout<

cout<

cout<

②符号常量

const数据类型符号常量名=常量值;

constdoublePI=3.14159;

(7)简单的输入输出

#include或者

#include

usingnamespacestd;

标准输出流cout

cout<<”welcometoC++!

!

!

\n”;//向显示器输出字符串

cout<<”i=”<

标准输出流cin

cin>>i>>j//从键盘输入i和j的值

(8)C++运算符和表达式(以优先级排列)

①:

:

域解析运算符

②.->[]()后置++和后置--

③sizeof前置++前置--*(解引用)&(取地址)+(正号)-(符号)!

newdelete

④(强制类型转换)

⑤*/%

⑥+-

⑦<<(左移位)>>(右移位)

⑧<><=>=

⑨==!

=

⑩&(按位与)

⑾^(按位异或)

(12)|(按位或)

(13)&&

(14)||

(15)?

:

(条件运算符)

(16)=*=/=%=+=-=<<=>>=&=|=^=

(17),

#include"stdafx.h"

usingnamespacestd;

voidmain()

{

cout<<"运算的演示"<<"算术运算符"<

cout<<"1233*37462="<<1233*37462<

cout<<"23.0/2398="<<23.0/2398<

cout<<"79/8="<<79/8<

cout<<"79.0/8="<<79.0/8<

cout<<"23%4="<<23%4<

cout<<"运算的演示"<<"位运算符"<

cout<<"(int)12<<3="<<((int)12<<3)<

cout<<"(int)12>>3="<<((int)12>>3)<

cout<<"~((short)12)="<<~((short)12)<

cout<<"(0x12A)&(0xC6)="<<((0x12A)&(0xC6))<

cout<<"(0x12A)|(0xC6)="<<((0x12A)|(0xC6))<

cout<<"(0x12A)^(0xC6)="<<((0x12A)^(0xC6))<

cout<<"运算的演示"<<"条件运算符"<

inta,b,c,d=10;

a=12;b=9;

c=(a>b?

a:

b);cout<<"(a>b?

a:

b)="<

c=((a+3)<(b-4)?

(a-3):

(b*7));

cout<<"((a+3)<(b-4)?

(a-3):

(b*7))="<

cout<<"运算的演示"<<"赋值运算符"<

cout<<"a="<

cout<<"(a+=2)"<<(a+=2)<

cout<<"(b*=3)"<<(b*=3)<

cout<<"(d-=d+2)"<<(d-=d+2)<

d=10;cout<<"(d-=2+2)"<<(d-=2+2)<

cout<<"运算的演示"<<"自增自减运算符"<

intm=1;

cout<<"m++"<

m=1;cout<<"++m"<<++m<<"m"<

inti;cin>>i;

}

(9)C++数据类型转化

1.自动类型转化

(1).两个不同类型的操作数进行运算时,先将较小范围的数转化为另一个较大范围的数,然后再进行计算。

各种基本数据类型的范围从小到大的排列次序如下:

char,bool→short→int→float→double

unsignedchar→unsignedshort→unsignedint→float→double

(2).对于bool,char,short,int,类型,任意两个值之间进行算术运算,位运算,其结果都是一个int值。

任意两个值之间进行逻辑运算,其结果都是一个bool值。

(3).对于bool,char,short,int类型,任一个类型值(无论是否带符号)与unsignedint之间进行算数运算,其结果都是unsignedint类型。

四个强制类型转换操作符

static_castdynamic_castconst_castreinterpet_cast

如:

static_cast<数据类型>(数值表达式)

doubled=1234.5678;

inti=10*static_cast(d)

2.C++的控制语句

(1)选择结构

IF语句

if(表达式)语句1;

else语句2;

*******************

if(表达式1)

if(表达式2)语句1

else语句2

else

if(表达式3)语句3

else语句4

if(i!

=j)

if(i>j)

cout<<”i>j”<

else

cout<<”i

else

cout<<”i=j”<

**********************

if(表达式1)语句1;

elseif(表达式2)语句2;

elseif(表达式3)语句3;

……

else语句n

或者写成这样的嵌套形式

if(表达式1)语句1;

else

if(表达式2)语句2;

else

if(表达式3)语句3;

……

else语句n

********************

switch结构

switch(变量名或表达式)

{

case常量表达式1:

语句1;break;

case常量表达式2:

语句2;break;

……

case常量表达式n:

语句n;break;

default:

语句n+1;

}

(2)循环结构

while循环

while(表达式)

循环语句;

******************

do-while循环

do

循环体语句;

while(表达式);

********************

for循环

for(表达式1;表达式2;表达式3)

循环语句;

(1)计算表达式1的值

(2)计算并判断表达式2的值,若表达式2的值非0或为True,则接着执行第(3)步;否则跳转到第4步。

(3)执行循环语句,计算表达式3的值,返回第2步。

(4)跳出循环,接着执行后面的语句。

*************************

foreach循环

inttemp,a[10]={1,8,9,0,7,9,6,7,8,9};

foreach(intnina)

{

cout<

temp=n+1;

cout<<"temp="<

}

(3)break语句

它用在switch语句和循环语句中,功能是:

立即从它包含的switch语句体或包含它的最内层的循环体中退出,开始按顺序执行后面的语句。

(4)continue语句

continue语句用在循环语句中,功能是:

立即结束本次循环的执行,转到判断循环条件的语句用来判断是否进行下一次循环。

(5)goto语句

无条件转移语句

例子1

voidmain()

{

intx=3;

do

{

cout<<(x-=2)<<"";

cout<<"x="<

}

while(!

(--x));

intj;cin>>j;

}

运行结果:

1x=1

-2x=-2

这是因为while(!

(--x))当x=0时!

x就是1,而当x为非零值时!

x为0。

例子2

voidmain()

{

intx=1,i=1;

intm;

for(;x<50;i++)

{

cout<<"x="<

if(x>=10)break;

if(x%2!

=0){x+=3;continue;}

x-=-1;

}

cout<

cin>>m;

}

显示结果:

3.C++数组

(1)数组的定义与初始化

数组可以由除void型以外的任何类型构成,定义数组的格式为:

C++里面的数组虽然说是下标从0开始,但是就像:

intyy[10]={……}

它仍然是定义了一个有10个元素的整型数组,不是11个元素,但是我们还要使用从0—9来访问这个数组里面的十个元素……

数据类型标识符[常量表达式1][常量表达式2]……;

1)定义数组

定义数组时可以对全部的元素进行初始化:

inta[3]={1,2,3};

intb[2][2]={23,12,0,4};或者intb[2][2]={{23,12},{2,4}};

也可以仅对一部分元素初始化:

floata[5]={1,2,3,4}

floatb[3][3]={{23,12,0},{2,6},{9}};

如果对全部元素初始化,数组元素个数不必给出:

inttt[]={1,2,3,4,5};

定义二维或多维数组时,如果同时对全部元素初始化,第一维的下标可以不给出。

intnn[][2][2]={1,2,3,4,5,6,7,8,9,0,11,12};

2)字符数组和字符串

charstr[20]

charstr[]={‘W’,’e’,’l’,’c’,’o’,’m’,’e’,’’,’t’,’o’,’’,’C’,’+’,’+’}

上面的语句只是定义并初始化了一个包含14个字符的普通字符数组,而不能构成C++字符串。

若想使字符数组构成一个字符串,则必须在初始化字符数组或给字符数组赋值时,使其中的某个字符元素的值为空字符’\0’。

例如:

charstr[]={‘W’,’e’,’l’,’c’,’o’,’m’,’e’,’’,’t’,’o’,’’,’C’,’+’,’+’,’\0’}

#include"stdafx.h"

usingnamespacestd;

voidmain()

{

//字符串与普通的字符数组

inti;

charstr[]={'W','e','l','c','o','m','e','','t','o','','C','+','+'};

foreach(charminstr)cout<

cout<

//但是这样语句是错的:

//cout<

//它会显示乱码,发生其他的错误,虽然编译器不会报错。

charmm[20];

cin>>mm;

cout<

foreach(charvinmm)cout<

cout<

cin>>i;

}

用户输入的字符在储存到字符数组中时,会自动的加上’\0’但是输入的字符不可以超过所定义的数组长度。

(2)指针

1)定义和使用指针

数据类型*标识符

int*ptr1

float*ptr2

使用指针之前必须给它赋值,使它确实指向某个对象。

使用符号&给指针赋值,这里&是取值运算符。

inti,*ptr1;

ptr1=&i;

可以将一个指针赋值给另一个指针,使两个指针指向同一个变量。

为指针赋值之后,就可以使用指针和解引用指针操作符*来操作它所指向的对象。

语法格式为:

*指针名

这时表达式“*指针名”和指针所指向的对象或变量名,是等价的。

(1)一种类型的指针不能指向另一种类型的变量

(2)可以把数值0赋给任何类型的指针变量,表示该指针为空指针,即不指向任何对象。

(3)不能将一个整型变量或非零整数常量直接赋值给指针变量。

(4)C++提供一种VOID类型的指针,可以保存任何类型变量(对象)的地址。

可以使用VOID型指针和其他指针进行比较,但不允许使用VOID型指针操作它所指向的对象。

当把VOID型指针赋值给其他类型指针时,需要使用强制类型转换。

指针的运算

1.赋值运算

inta=16,b=28;

floatx=32.6f,y=69.1f;

int*pa,*pb=&b;

float*px,*py=NULL;

px=&x;

pa=pb;//pa和pb都指向了同一个变量。

2.间接引用运算

inta=16,b=28;

int*pa,*pb=&b;

cout<<*pb<

pa=&a;

cout<

*pa=32;

cout<

“&”求址运算与“*”间接引用运算是一对互逆的运算。

对于任意一个变量v,*&v==v。

对于任意一个指针变量p,&*p==p。

3.与整数的运算

使指针移动,与整数的加减运算和自增自减运算。

如:

inta[]={11,22,33,44,55,66,77,88};

cout<<"a="<

int*p=a;

for(inti=0;i<=7;i++){

cout<<"a["<

p++;

}

int*pa=&a[4];

cout<<"pa-2"<

cout<<"pa+3"<

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1