ImageVerifierCode 换一换
格式:DOC , 页数:49 ,大小:115.50KB ,
资源ID:2542043      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-2542043.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机二级C++考试复习资料(全).doc)为本站会员(weiwoduzun)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

计算机二级C++考试复习资料(全).doc

1、计算机二级 C+考试复习资料(全)一、C+ 概述(一 ) 发展历史 1980 年,Bjarne Stroustrup 博士开始着手创建一种模拟语言,能够具有面向对象的程序设计特色。在当时,面向对象编程还是一个比较新的理念,Stroustrup 博士并不是从头开始设计新语言,而是在 C 语言的基础上进行创建。这就是 C+语言。1985 年,C+开始在外面慢慢流行。经过多年的发展, C+已经有了多个版本。为次,ANSI 和 ISO 的联合委员会于 1989 年着手为 C+制定标准。1994 年 2 月,该委员会出版了第一份非正式草案,1998 年正式推出了 C+的国际标准。(二 ) C 和 C+C

2、+是 C 的超集,也可以说 C 是 C+的子集,因为 C 先出现。按常理说,C+ 编译器能够编译任何 C 程序,但是 C 和 C+还是有一些小差别。例如 C+增加了 C 不具有的关键字。这些关键字能作为函数和变量的标识符在 C程序中使用,尽管 C+包含了所有的 C,但显然没有任何 C+编译器能编译这样的 C程序。C 程序员可以省略函数原型,而 C+不可以,一个不带参数的 C 函数原型必须把void 写出来。而 C+可以使用空参数列表。C+中 new 和 delete 是对内存分配的运算符,取代了 C 中的 malloc 和 free。标准 C+中的字符串类取代了 C 标准 C 函数库头文件中的

3、字符数组处理函数。C+中用来做控制态输入输出的 iostream 类库替代了标准 C 中的 stdio 函数库。C+中的 try/catch/throw 异常处理机制取代了标准 C 中的 setjmp()和 longjmp()函数。二、关键字和变量C+相对与 C 增加了一些关键字,如下:typename bool dynamic_cast mutable namespacestatic_cast using catch explicit newvirtual operator false private templatevolatile const protected this wchar_t

4、const_cast public throw friend truereinterpret_cast trybitor xor_e and_eq compl or_eqnot_eq bitand在 C+中还增加了 bool 型变量和 wchar_t 型变量:布尔型变量是有两种逻辑状态的变量,它包含两个值:真和假。如果在表达式中使用了布尔型变量,那么将根据变量值的真假而赋予整型值 1 或 0。要把一个整型变量转换成布尔型变量,如果整型值为 0,则其布尔型值为假;反之如果整型值为非 0,则其布尔型值为真。布儿型变量在运行时通常用做标志,比如进行逻辑测试以改变程序流程。#include iostr

5、eam.hint main()bool flag;flag=true;if(flag) couta; /*输入一个数值*/couta;couta;for(int i=1;isize;int *array=new intsize;for(int i=0;i arrayi=rand();for(i=0;i cout等运算符#include iostream.hvoid func1(s p);void func2(sstruct sint n;char text10;int main()static s str=123,China;func1(str);func2(str);return 0;voi

6、d func1(s p)coutdt;if(dt0 mo=tim-tm_mon+1;yr=tim-tm_year;if(yr=100) yr-=100;int main()time_t now=time(0);Date dt(now);dt.display();return 0;本程序先调用 time()函数来获取当前时间,并把它赋给 time_t 对象;然后程序通过调用 Date 类的转换构造函数来创建一个 Date 对象,该对象由 time_t 对象转换而来。time_t 对象先传递给 localtime()函数,然后返回一个指向 tm 结构(time.h 文件中声明)的指针,然后构造函数

7、把结构中的日月年的数值拷贝给 Date 对象的数据成员,这就完成了从 time_t 对象到 Date 对象的转换。二、成员转换函数成员转换函数把该类的对象转换为其他数据类型的对象。在成员转换函数的声明中要用到关键字 operator。这样声明一个成员转换函数:operator aaa();在这个例子中,aaa 就是要转换成的数据类型的说明符。这里的类型说明符可以是任何合法的 C+类型,包括其他的类。如下来定义成员转换函数;Classname:operator aaa()类名标识符是声明了该函数的类的类型说明符。上面定义的 Date 类并不能把该类的对象转换回 time_t 型变量,但可以把它转

8、换成一个长整型值,计算从 2000 年 1 月 1日到现在的天数。#include iostream.hclass Dateint mo,da,yr;public:Date(int m,int d,int y) mo=m; da=d; yr=y;operator int(); /声明;Date:operator int() /定义static int dys=31,28,31,30,31,30,31,31,30,31,30,31;int days=yr-2000;days*=365;days+=(yr-2000)/4;for(int i=0;i days+=dysi;days+=da; ret

9、urn days;int main()Date now(12,24,2003);int since=now;coutdysmo) da-=dysmo;else break;mo+;Date:operator CustomDate()CustomDate cd(0,yr);for(int i=0;i cd.da+=da;return cd;int main()Date dt(12,24,3);CustomDate cd;cd = dt; /调用成员转换函数cd.display();dt = cd; /调用转换构造函数dt.display();return 0;这个例子中有两个类 CustomDa

10、te 和 Date,CustomDate 型日期包含年份和天数。这个例子没有考虑闰年情况。但是在实际构造一个类时,应该考虑到所有问题的可能性。在 Date 里中具有两种转换函数,这样,当需要从 Date 型变为 CustomDate 型十,可以调用成员转换函数;反之可以调用转换构造函数。不能既在 Date 类中定义成员转换函数,又在 CustomDate 类里定义转换构造函数。那样编译器在进行转换时就不知道该调用哪一个函数,从而出错.四、转换函数的调用C+里调用转换函数有三种形式:第一种是隐式转换,例如编译器需要一个 Date对象,而程序提供的是 CustomDate 对象,编译器会自动调用合

11、适的转换函数。另外两种都是需要在程序代码中明确给出的显式转换。C+强制类型转换是一种,还有一种是显式调用转换构造函数和成员转换函数。下面的程序给出了三中转换形式:#include iostream.hclass CustomDatepublic:int da, yr;CustomDate(int d=0,int y=0) da=d; yr=y;void display()coutdysmo) da-=dysmo;else break;mo+;int main()Date dt(CustomDate(123, 89);dt.display(); return 0;6.匿名对象上面 main()函

12、数中 Date 对象调用 CustomDate 类的构造函数创建了一个匿名CustomDate 对象,然后用该对象创建了一个 Date 对象。这种用法在 C+中是经常出现的。7.非类成员的友元函数有时候友元函数未必是某个类的成员。这样的函数拥有类对象私有数据成员的读写权,但它并不是任何类的成员函数。这个特性在重载运算符时特别有用。非类成员的友元函数通常被用来做为类之间的纽带。一个函数如果被两个类同时声明为友元,它就可以访问这两个类的私有成员。下面的程序说明了一个可以访问两个类私有数据成员的友元函数是如何将在两个类之间架起桥梁的。#include iostream.hclass Time;cla

13、ss Dateint mo,da,yr;public:Date(int m,int d,int y) mo=m; da=d; yr=y;friend void display(const Date; class Timeint hr,min,sec;public:Time(int h,int m,int s) hr=h; min=m; sec=s;friend void display(const Date;void display(const Dateif (strncmp(name, end, 3) = 0) break;ListEntry* list = new ListEntry(na

14、me); if (prev != 0) prev-AddEntry(*list);prev = list;while (prev != 0)prev-display();ListEntry* hold = prev;prev = prev-PrevEntry();delete hold;return 0;程序运行时,会提示输入一串姓名,当输入完毕后,键入 end,然后程序会逆序显示刚才输入的所有姓名。程序中 ListEntry 类含有一个字符串和一个指向前一个表项的指针。构造函数从对中获取内存分配给字符串,并把字符串的内容拷贝到内存,然后置链接指针为NULL。析构函数将释放字符串所占用的内存。

15、成员函数 PrevEntry()返回指向链表前一个表项的指针。另一个成员函数显示当前的表项内容。成员函数 AddEntry(),它把 this 指针拷贝给参数的 preventry 指针,即把当前表项的地址赋值给下一个表项的链接指针,从而构造了一个链表。它并没有改变调用它的listEntry 对象的内容,只是把该对象的地址赋给函数的参数所引用的那个 ListEntry 对象的 preventry 指针,尽管该函数不会修改对象的数据,但它并不是常量型。这是因为,它拷贝对象的地址 this 指针的内容给一个非长常量对象,而编译器回认为这个非常量对象就有可能通过拷贝得到的地址去修改当前对象的数据,因此 AddEntry()函数在声明时不需要用 const.二级 C+辅导笔记:类对象数组和静态成员一、类对象数组类的对象和 C+其他数据类型一样,也可以为其建立数组,数组的表示方法和结构一样。#include iostream.hclass Dateint mo,da,yr;public:Date(int m=0,int d=0, int y=0) mo=m; da=d; yr=y;void display() const coutnextentry=this;lastentry=this;

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报