C++学习要点完全版Word格式文档下载.docx
- 文档编号:1551235
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:157
- 大小:351.80KB
C++学习要点完全版Word格式文档下载.docx
《C++学习要点完全版Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C++学习要点完全版Word格式文档下载.docx(157页珍藏版)》请在冰点文库上搜索。
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
字符型
-128~127
[signed]char
有符号字符型
unsignedchar
无符号字符型
0~255
short[int]
有符号短整型
2
-32768~32767
[signed]short[int]
unsignedshort[int]
无符号短整型
0~65535
int
有符号整型
4
-2147483648~2147483647
[signed]int
unsignedint
无符号整型
0~4294967295
long[int]
长整型
[signed]long[int]
有符号长整型
unsignedlong[int]
无符号长整型
float
单精度浮点值
double
双精度浮点值
8
longdouble
长双精型
(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
空字符,字符串结束符
\a
7
响铃
\b
退格
\f
12
换页
\n
10
换行符
\ooo
1~3位八进制数
\r
13
回车
\t
9
水平制表符
\v
11
垂直制表符
\xhh
1~2位十六进制数
对于int和short这样的整形数据,可以使用控制符改变它们的输出进制:
cout<
<
oct<
i;
//将i输出为八进制
hex<
//将i输出为十六进制
dec<
//将i输出为十进制
②符号常量
const数据类型符号常量名=常量值;
constdoublePI=3.14159;
(7)简单的输入输出
#include<
iostream.h>
或者
iostream>
usingnamespacestd;
标准输出流cout
”welcometoC++!
!
\n”;
//向显示器输出字符串
”i=”<
i<
endl;
//向显示器输出变量i的值
标准输出流cin
cin>
>
i>
j//从键盘输入i和j的值
(8)C++运算符和表达式(以优先级排列)
①:
:
域解析运算符
②.->
[]()后置++和后置--
③sizeof前置++前置--*(解引用)&
(取地址)+(正号)-(符号)!
newdelete
④(强制类型转换)
⑤*/%
⑥+-
⑦<
(左移位)>
(右移位)
⑧<
>
<
=>
=
⑨==!
⑩&
(按位与)
⑾^(按位异或)
(12)|(按位或)
(13)&
&
(14)||
(15)?
(条件运算符)
(16)=*=/=%=+=-=<
=&
=|=^=
(17),
#include"
stdafx.h"
voidmain()
{
cout<
"
运算的演示"
算术运算符"
1233*37462="
1233*37462<
23.0/2398="
23.0/2398<
79/8="
79/8<
79.0/8="
79.0/8<
23%4="
23%4<
位运算符"
(int)12<
3="
((int)12<
3)<
(int)12>
((int)12>
~((short)12)="
~((short)12)<
(0x12A)&
(0xC6)="
((0x12A)&
(0xC6))<
(0x12A)|(0xC6)="
((0x12A)|(0xC6))<
(0x12A)^(0xC6)="
((0x12A)^(0xC6))<
条件运算符"
inta,b,c,d=10;
a=12;
b=9;
c=(a>
b?
a:
b);
(a>
b)="
c<
c=((a+3)<
(b-4)?
(a-3):
(b*7));
((a+3)<
(b*7))="
赋值运算符"
a="
a<
"
b="
b<
d="
d<
(a+=2)"
(a+=2)<
(b*=3)"
(b*=3)<
(d-=d+2)"
(d-=d+2)<
d=10;
(d-=2+2)"
(d-=2+2)<
自增自减运算符"
intm=1;
m++"
m++<
m"
m<
m=1;
++m"
++m<
inti;
}
(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<
int>
(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)
”i>
j”<
else
”i<
”i=j”<
**********************
if(表达式1)语句1;
elseif(表达式2)语句2;
elseif(表达式3)语句3;
……
else语句n
或者写成这样的嵌套形式
if(表达式2)语句2;
if(表达式3)语句3;
else语句n
********************
switch结构
switch(变量名或表达式)
case常量表达式1:
语句1;
break;
case常量表达式2:
语句2;
case常量表达式n:
语句n;
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<
n<
temp=n+1;
temp="
temp<
}
(3)break语句
它用在switch语句和循环语句中,功能是:
立即从它包含的switch语句体或包含它的最内层的循环体中退出,开始按顺序执行后面的语句。
(4)continue语句
continue语句用在循环语句中,功能是:
立即结束本次循环的执行,转到判断循环条件的语句用来判断是否进行下一次循环。
(5)goto语句
无条件转移语句
例子1
intx=3;
do
{
cout<
(x-=2)<
;
x="
x<
while(!
(--x));
intj;
j;
运行结果:
1x=1
-2x=-2
这是因为while(!
(--x))当x=0时!
x就是1,而当x为非零值时!
x为0。
例子2
intx=1,i=1;
intm;
for(;
50;
i++)
x="
if(x>
=10)break;
if(x%2!
=0){x+=3;
continue;
x-=-1;
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’}
//字符串与普通的字符数组
charstr[]={'
W'
'
e'
l'
c'
o'
m'
'
t'
C'
+'
};
foreach(charminstr)cout<
//但是这样语句是错的:
//cout<
str;
//它会显示乱码,发生其他的错误,虽然编译器不会报错。
charmm[20];
mm;
mm<
foreach(charvinmm)cout<
v;
用户输入的字符在储存到字符数组中时,会自动的加上’\0’但是输入的字符不可以超过所定义的数组长度。
(2)指针
1)定义和使用指针
数据类型*标识符
int*ptr1
float*ptr2
使用指针之前必须给它赋值,使它确实指向某个对象。
使用符号&
给指针赋值,这里&
是取值运算符。
inti,*ptr1;
ptr1=&
可以将一个指针赋值给另一个指针,使两个指针指向同一个变量。
为指针赋值之后,就可以使用指针和解引用指针操作符*来操作它所指向的对象。
语法格式为:
*指针名
这时表达式“*指针名”和指针所指向的对象或变量名,是等价的。
(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.间接引用运算
*pb<
//输出28
pa=&
a;
//输出16
*pa=32;
//输出32
“&
”求址运算与“*”间接引用运算是一对互逆的运算。
对于任意一个变量v,*&
v==v。
对于任意一个指针变量p,&
*p==p。
3.与整数的运算
使指针移动,与整数的加减运算和自增自减运算。
inta[]={11,22,33,44,55,66,77,88};
int*p=a;
for(inti=0;
=7;
i++){
a["
]="
p++;
int*pa=&
a[4];
pa-2"
pa-2<
*(pa-2)"
*(pa-2)<
pa+3"
pa+3<
*(pa+3)"
*(pa+3)<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 学习 要点 完全