第2章C对C的扩充.ppt
《第2章C对C的扩充.ppt》由会员分享,可在线阅读,更多相关《第2章C对C的扩充.ppt(41页珍藏版)》请在三一办公上搜索。
1、第2章 C+对C的扩充,2.1 C+的特点2.2 C+语言的文件扩展名2.3 注释符2.4 名字空间2.5 C+语言的输入输出2.6 变量的定义2.7 强制类型转换,2.8 动态内存的分配与释放2.9 作用域运算符:2.10 引用2.11 const修饰符2.12 字符串2.13 C+语言中函数的新特性,2.1 C+的特点 C+语言既保留了C语言的有效性、灵活性、便于移植等全部精华和特点,又添加了面向对象编程的支持。用C+编写的程序可读性好,生成的代码质量高,运行效率仅比汇编语言慢10%20%。,2.2 C+语言的文件扩展名,为了使编译器能够区别是C语言还是C+语言,C+语言体系规定用“.cp
2、p”(意即C Plus-Plus)作为C+语言源文件的扩展名以区别于C语言用的“.C”文件扩展名。与C+语言源文件相关的头文件扩展名一般仍用“.h”(有些操作系统也规定使用“.hpp”)。,2.3 注释符,1.段注释:/*/2.单行注释:/当只做单行注释时便可用“/”符号表示从此符号起至行尾均为行注释内容。程序编译时将忽略所有的注释内容。,2.4 名字空间(名空间namespace),用花括号把文件的一部分括起来,并以关键字namespace开头给它起一个名字:namespace ns1 float a,b,c;fun1(),花括号括起来的部分称声明块。声明块中可以包括:类、变量(带有初始化)
3、、函数(带有定义)等。在域外使用域内的成员时,需加上名字空间名作为前缀,后面加上域操作符“:”。如:ns1:a,ns1:fun1()。最外层的名字空间域称为全局名字空间域(global namespace scope),即文件域。名字空间域可分层嵌套,同样有分层屏蔽作用。如:namespace n1 namespace n2/名字空间嵌套 class matrix/名字空间类成员matrix 访问matrix,可写:n1:n2:matrix,使用using声明可只写一次限定修饰名。using声明以关键字using开头,后面是被限定修饰的名字空间成员名,如:using n1:n2:matrix;
4、/名字空间类成员matrix的using声明以后在程序中使用matrix时,就可以直接使用matrix,而不必使用限定修饰名。使用using指示符可以一次性地使名字空间中所有成员都可以直接被使用,比using声明方便。using指示符以关键字using开头,后面是关键字namespace,然后是名字空间名。如:using namespace ns1;,标准C+库中的所有组件都是在一个被称为std的名字空间中声明和定义的。在采用标准C+的平台上使用标准C+库中的组件,只要写一个using指示符:using namespace std;就可以直接使用标准C+库中的所有成员。注意:如果使用了名空间s
5、td,则在使用#include编译预处理命令包含头文件时,必须去掉头文件的扩展名.h,否则会出错。,#include using namespace std;和#include是一样的,2.5 C+语言的输入输出,C+语言另外定义了一套保留字与运算符来替代C语言中对标准输入、输出函数的引用。#include cout“输入内容”;/标准输入流对象(默认从键盘输入),【例2.1】C+的输入输出举例。#include/使用名空间std,则必须去掉.h扩展名using namespace std;void main()char name10;int age;coutname;coutage;cout
6、name is nameendl;coutage is ageendl;,2.6 变量的定义,C+允许变量的定义语句可以出现在程序的任何位置。C+允许直接使用结构体名(联合名、枚举名)定义变量。,【例2.2】C+的变量定义举例。#includeusing namespace std;void main()struct studentint no;float math;int n;cinn;student wang;wang.no=n;cinwang.math;coutwang.no wang.mathendl;,2.7 强制类型转换,格式:(数据类型)(表达式)或:数据类型(表达式)int b
7、;float f;f=float(b);/此时变量b仍然为int类型 float(i)*f/*强制类型转换符优先级较高,先将变量i强制类型转换为float类型,然后与变量f运算*/,2.8 动态内存的分配与释放,1.new运算符做分配 指针变量=new 数据类型;2.delete运算符做释放 delete 指针变量;/*其中的指针变量保存着new动态分配的内存的首地址*/注意:(1)用new获取的内存空间,必须用delete进行释放;(2)对一个指针只能调用一次delete;(3)用delete运算符作用的对象必须是用new分配的内存空间的首地址。,#include using namespa
8、ce std;void main()int*p;p=new int;/分配内存空间*p=5;cout*p;delete p;/释放内存空间,【例2.3】new与delete应用举例。,在用new分配内存的同时进行初始化。使用形式为:指针变量=new 数据类型(初始值);例如上例中的:p=new int;*p=5;也可写成:p=new int(5);,指针变量=new 数据类型数组大小;此时指针变量指向第一个数组元素的地址。使用new分配数组时,不能提供初始值。使用new建立的数组变量也由delete释放。其形式为:delete 指针变量;或delete 指针变量;同样,也可以用new来为多维数
9、组分配空间,但是除第一维可以为变量外,其它维数都必须是常量。,用new建立数组类型的变量,注意在使用delete时,不用考虑数组的维数。有时,并不能保证一定可以从堆内存中获得所需空间,当不能成功地分配到所需要的内存时,new返回0,即空指针。因此我们可以通过判断new的返回值是否为0,来得知系统中是否有足够的空闲内存来供程序使用。例如:int*p=new int100;if(p=0)cout cant allocate more memory,terminating.endl;exit(1);其中exit函数的作用是终止程序运行。,#include void main()int n;/定义数组
10、元素的个数int*p;coutn;if(p=new intn)=0)/分配内存空间coutcant allocate more memory,terminating.endl;exit(1);for(int i=0;in;i+)pi=i*2;coutNow output the array:endl;for(i=0;in;i+)coutpi;coutendl;delete p;/释放内存空间,【例2.4】从堆内存中获取一个整型数组,赋值后并打印出来。,补充:复制初始化和直接初始化。,int n(50);/直接初始化int m=20;/复制初始化,注意:初始化不是赋值,2.9 作用域运算符:,通
11、常情况下,如果全局变量与局部变量同名,那么局部变量在其作用域内具有较高的优先权。C+中提供的作用域运算符:,它能指定所需要的作用域。注意:不能用:访问函数中的局部变量。在C+语言中作用域运算符:还用来限定类的成员。,#include using namespace std;float a=2.4;/全局变量void main()int a=8;/局部变量coutaendl;cout:aendl;/:a表示全局变量a,2.10 引用,引用,用于在程序的不同部分使用两个以上的变量名指向同一地址(内存空间),使得对其中任一个变量的操作实际上都是对同一地址单元进行的。被声明为引用类型的变量名则是实际变
12、量名的别名。引用运算符为&,声明引用的一般形式为:数据类型&引用变量名=变量名;或 数据类型&引用变量名=变量名;或 数据类型&引用变量名=变量名;对引用进行操作,实际上就是对被引用的变量进行操作引用不是值,不占存储空间引用一旦被初始化,就不能再重新赋值,【例2.5】引用举例。#include void main()int num=50;int,11点说明:在一行上声明多个引用型变量(函数)名时,要在每个变量(函数)名前都冠以“/对,(4)由于引用不是变量,所以,不能说明引用的引用,也不能说明数组元素的类型为引用数组,或指向引用的指针(引用不占内存空间)。例如:int/a指向变量b(5)引用与
13、指针不同 指针的内容或值是某一变量的内存单元地址,而引用则与初始化它的变量具有相同的内存单元地址。指针是个变量,可以把它再赋值成其它的地址,然而,建立引用时必须进行初始化并且决不会再指向其它不同的变量。,(6)引用运算符和地址运算符不同。例如:int num=50;int/num被修改为100(8)常把函数的参数说明成引用以建立函数参数的引用传递方式。【例2.7】引用作为函数参数实现数值交换,(9)有空指针,无空引用(10)引用不能用数据类型来初始化。如:int&ref=int;/error(11)返回引用的函数调用可作为左值 若一个函数返回了引用,那么该函数的调用也可以被赋值。返回值不能是函
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 扩充
链接地址:https://www.31ppt.com/p-5896192.html