您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > C++程序设计复习笔记
C++程序设计1第一章认识C++的对象§1.1初识C++的函数和对象1、混合型函数C++以.cpp为文件扩展名,有且只有一个名为main的主函数,因保留了这个面向过程的主函数,所以被称为混合型语言。2、注释方式①从“/*”开始,到“*/”结束,如:/*……*/②从“//”开始到本行结束,如://……3、输入输出对象①提取操作:用提取操作符“”从cin输入流中提取字符,如:cina.x;②插入操作:用插入操作符“”向cout输出流中插入字符,如:cout“we”;coutendl;③使用标准输入(键盘输入)cin及标准输出(屏幕输出)cout前,要在主函数前使用#includeiostream将C++标准输入输出库头文件iostream将其包括。④换行操作:用语句coutendl;或cout“\n”;实现,其中endl可以插在流的中间。如:couta.xendla.yendl;4、使用命名空间C++相比C而言,可以省略“.h”标识头文件,但必须使用语句usingnamespacestd;来让命名空间中的对象名称曝光。因此一般的程序都要具有下面的两条语句:#includeiostream//包含头文件usingnamespacestd;//使用命名空间注意C++库中代替C库中头文件的正确名称,例如下面两个语句效果一样:①#includemath.h②#includecmathC++程序设计2usingnamespacestd;5、对象的定义和初始化定义对象包括为它命名并赋予它数据类型,一般即使初值只用来表示该对象尚未具有真正意义的值,也应将每个对象初始化。C++中利用构造函数语法实现初始化,如:intz(0);//等同于intz=0;6、函数原型及其返回值①C++使用变量和函数的基本规则都是:先声明,后使用。变量有时也可边声明边使用,但必须声明,否则出错。比如对函数的调用,要在主函数之前先对调用的函数进行原型声明,如:intresult(int,int);它向编译系统声明,后面有一个result函数,该函数有两个整型类型的参数,函数返回整型值。函数声明时,除了默认参数(需给出默认参数的默认值)和内联函数(需给出函数体及其内语句)外,不需给出参数的变量名称,如果给出,效果也一样,如:intresult(inta,intb);和上面的声明效果一样。②除构造函数与析构函数外,函数都需要有类型声明。如intmain(),指出main是整数类型,返回值由return后面的表达式决定,且表达式的值必须与声明函数的类型一致。如果函数确实不需要返回值,还可用void标识,一旦使用void标识,函数体内就不再需要使用return语句,否则会编译出错,但可使用return;语句。③C++函数有库函数(标准函数,引用时函数名外加)和自定义函数(引用时函数名外加“”)两类。7、const(常量)修饰符及预处理程序①const修饰符:用于定义符号常量。C中一般使用宏定义“#define”定义常量,而C++中除此外,建议使用const代替宏定义,用关键字const修饰的标识符称为符号常量。因const是放在语句定义之前的,因此可以进行类型判别,这比用宏定义更安全一些。如下面两个语句是等同的,但是后者可以比前者避免一些很难发现的C++程序设计3错误。#difineBOFSIZE100constintBUFSIZE100;常量定义也可使用构造函数的初始化方法,如:constintk(2);//等同于constintk=2;因被const修饰的变量的值在程序中不能被改变,所以在声明符号常量时,必须对符号常量进行初始化,除非这个变量是用extern修饰的外部变量,如:constintd;×constintd=2;√externconstintd;√const的用处不仅是在常量表达式中代替宏定义,如果一个变量在生存期内的值不会改变,就应该用const来修饰这个变量,以提高程序安全性。②预处理程序C++的预处理程序不是C++编译程序的一部分,它负责在编译程序的其他部分之前分析处理预处理语句,为与一般的C++语句区别,所有预处理语句都以位于行首的符号“#”开始,作用是把所有出现的、被定义的名字全部替换成对应的“字符序列”。预处理语句有三种:宏定义、文件包含(也成嵌入指令)和条件编译。文件包含是指一个程序把另一个指定文件的内容包含进来,书写时可以使用引号也可以使用尖括号,前者引用自己定义的包含文件,如:#include“E:\prog\myfile.h”,后者引用系统提供的包含文件,如标准输入输出是定义在标准库iostream中的,引用时要包括以下两条语句:#includeiostream//包含头文件usingnamespacestd;//使用命名空间8、程序运行结果9、程序书写格式C++的格式和C一样,都很自由,一行可以写几条语句,但也要注意以下规则,增加可读性:①括号紧跟函数名后面,但在for和while后面,应用一个空格与左括号隔开;②数学运算符左右各留一个空格,以与表达式区别;C++程序设计4③在表示参数时,逗号后面留一个空格;④在for、do…while和while语句中,合理使用缩进、一对花括号和空行;⑤适当增加空行和程序注释以增加可读性;⑥太长的程序分为两行或几行,并注意选取合适的分行和缩进位置。§1.2认识C++面向过程编译的特点一、使用函数重载C++允许为同一个函数定义几个版本,从而使一个函数名具有多种功能,这称为函数重载。假设有一个函数max,分别具有以下函数原型:intmax(int,int);//2个整型参数的函数原型intmax(int,int,int);//3个整型参数的函数原型只要分别为不同参数的max编制相应的函数体,就可以实现各自的功能。二、新的基本数据类型及其注意事项1、void是无类型标识符,只能声明函数的返回值类型,不能声明变量。2、C++还比C多了bool(布尔)型。3、C++只限定int和short至少要有16位,而long至少32位,short不得长于int,int不能长于long,VC++6.0规定int使用4字节,这与C使用2字节不同。4、地址运算符“&”用来取对象存储的首地址,对于数组,则数组名就是数组的首地址。如:intx=56;定义x,VC++6.0使用4个字节存储对象56,假设存放的内存首地址用十六进制表示为006AFDEC,则语句cout&x;自动使用十六进制输出存储的首地址006AFDEC。5、C++中的常量分三种,第一种为符号常量;第二种为整数常量,有4种类型,分别为十进制、长整型、八进制、十六进制,并用前缀和后缀进行分类标识;第三种为浮点常量,有三种类型,分别为float型、longfloat型、double型,C++程序设计5并用后缀进行分类识别。符号常量float型:后缀F(f),如3.2f、0.002f、52.48f浮点常量longfloat型:后缀L(l),如0.2L、4.5L、52.48L常量double型:无后缀,如3.0、12.3、0.002长整型:后缀L(l),如-456L、0L、2145857852L整数常量十进制:无后缀,如-32、0、123八进制:前缀O(o),如O123、O5、O32737十六进制:前缀OX(ox),如0x15,0x1A,0x1f16、C++与C一样,也使用转义序列。如:’\0’表示ASCII码值为零的空字符(NULL),’\101’表示字符A。三、动态分配内存1、在使用指针时,如果不使用对象地址初始化指针,可以自己给它分配地址。对于只存储一个基本类型数据的指针,申请方式如下:new类型名[size]//申请可以存储size个该数据类型的对象不再使用时,必须使用delete指针名;来释放已经申请的存储空间。如:……double*p;//声明double型指针p=newdouble[3]//分配3个double型数据的存储空间……deletep;//释放已申请的存储空间……2、C必须在可执行语句之前集中声明变量,而C++可以在使用对象时再声明或定义。3、C++为结构动态分配内存一般格式为:指针名=new结构名;//分配C++程序设计6delete指针名;//释放例如给书中例1.1的Point结构指针分配内存:p=newPoint;当不再使用这个空间时,必须使用deletep;释放空间。四、引用1、引用简单的说,就是为现有的对象起个别名,别名的地址与引用对象的地址是一样的。引用的声明方式为:数据类型&别名=对象名;,注意对象在引用前必须先初始化,另外声明中符号“&”的位置无关紧要,比如int&a=x;、int&a=x;和int&a=x;等效。例:……intx=56;//定义并初始化xint&a=x;//声明a是x的引用,二者地址相同int&r=a;//声明r是a的引用,二者地址相同……r=25;//改变r,则a和x都同步变化……2、所谓“引用”,就是将一个新标识符和一块已经存在的存储区域相关联。因此,使用引用时没有分配新的存储区域,它本身不是新的数据类型。可以通过修改引用来修改原对象,但是不能有空引用,在程序中必须确保引用是和一块正确的存储区域关联。引用通常用于函数的参数表中或作为函数的返回值。前者因为使用引用作为函数参数不产生临时对象,可提高程序执行效率和安全性(§4.4.3),后者则是因为引用作为函数返回值可用于赋值运算符的左边。3、引用实际上就是变量的别名,使用引用就如同直接使用变量一样,引用与变量名在使用的形式上完全一样,引用只是作为一种标识对象的手段。但要注意,可以声明指向变量或引用的指针,如:int*p=&x;√int&a=x;int*p=&a;√;也可以声明指针对指针的引用,如:int*&p2=p1;√(式中p1、p2是指针,*声明p2是指针,&声明p2是p1的引用);C++程序设计7但不能声明指针对变量的引用,如:int*&P=&x;×;不能声明引用的引用,如:int&&r=x;×;也不能直接声明对数组的引用。4、引用的作用与指针有相似之处,它会对内存地址上存在的变量进行修改,但它不占用新的地址,从而节省开销。二者除使用形式不同,本质也不同:指针是低级的直接操作内存地址的机制,可由整型数强制类型转换得到,功能强大但易出错;引用则是较高级的封装了指针的特性,不直接操作内存地址,不可由强制类型转换而得,安全性较高。5、虽然不能直接定义对数组的引用,但可以通过typedef来间接的建立对数组的引用。如:……typedefintarray[10];//定义int型数组类型array……arraya={12,34,……};//定义array型数组aarray&b=a;//定义数组a的引用b……五、对指针使用const限定符1、变量的指针、指向变量的指针变量、指针变量指向的变量变量的指针就是变量的地址,存放变量地址的变量是指针变量,为了表示指针变量和它所指向的变量之间的联系,在程序中用“*”符号表示“指向”。例如用p代表指针变量,来存放变量a所在的内存地址,则*p代表指针变量指向的变量,也就是变量a,且下面等式成立:p=&a*p=*&a=a&*p=&a(*p)++=a++2、左值和右值左值是指某个对象的表达式,必须是可变的。左值表达式在赋值语句中即可作为左操作数,也可作为右操作数,如:x=56;和y=x;,而右值56就只能作为右操作数,不能作为左操作数。某些运算符如指针运算符“*”和取首地址运算符“&”也可产生左值,例如p是一个指针类型的表达式,则“*p”是左值表达式,代表由p指向的对象,C++程序设计8且可通过“*p=”改变这个对象的值;“&p”也是左值表达式,代表由p指向的对象的首地址,且可通过“&p=”改变这个指针的指向。3、指向常量的指针(constint*p=&x;“*p=”的操作不成立)指向常量的指针是在非常量指针声明前面使用const,如:constint*p;,它
本文标题:C++程序设计复习笔记
链接地址:https://www.777doc.com/doc-5592284 .html