首页 - 网校 - 万题库 - 美好明天 - 直播 - 导航
您现在的位置: 考试吧 > 计算机等级考试 > 计算机二级考试 > C加加 > 复习资料 > 正文

计算机二级C++语言程序设计考试辅导笔记(八)

来源:考试吧 2018-03-26 10:05:12 要考试,上考试吧! 万题库
“计算机二级C++语言程序设计考试辅导笔记(八)”供考生参考。更多计算机等级考试内容请访问考试吧计算机等级考试网。

  二、成员转换函数

  成员转换函数把该类的对象转换为其他数据类型的对象。在成员转换函数的声明中要用到关键字operator。这样声明一个成员转换函数:

  operator aaa();

  在这个例子中,aaa就是要转换成的数据类型的说明符。这里的类型说明符可以是任何合法的C++类型,包括其他的类。如下来定义成员转换函数;

  Classname::operator aaa()

  类名标识符是声明了该函数的类的类型说明符。上面定义的Date类并不能把该类的对象转换回time_t型变量,但可以把它转换成一个长整型值,计算从2000年1月1日到现在的天数。

  #include iostream.h

  class Date

  {

  int 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+=dys[i];

  days+=da;

  return days;

  }

  int main()

  {

  Date now(12,24,2003);

  int since=now;

  cout< return 0;

  }

  三、类的转换

  上面两个例子都是C++类对象和内部数据对象之间的相互转换。也可以定义转换函数来实现两个类对象之间的相互转换。

  #include iostream.h

  class CustomDate

  {

  public:

  int da, yr;

  CustomDate(int d=0,int y=0) {da=d; yr=y;}

  void display()

  {

  cout< }

  };

  class Date

  {

  int mo, da, yr;

  public:

  Date(int m=0,int d=0,int y=0) {mo=m; da=d; yr=y;}

  Date(const CustomDate&); //转换构造函数

  operator CustomDate(); //成员转换函数

  void display()

  {

  cout< }

  };

  static int dys[] = {31,28,31,30,31,30,31,31,30,31,30,31};

  Date::Date(const CustomDate& jd)

  {

  yr=jd.yr;

  da=jd.da;

  for(mo=0;mo<11;mo++)

  if(da>dys[mo]) da-=dys[mo];

  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;

  }

  这个例子中有两个类CustomDate和Date,CustomDate型日期包含年份和天数。

  这个例子没有考虑闰年情况。但是在实际构造一个类时,应该考虑到所有问题的可能性。

  在Date里中具有两种转换函数,这样,当需要从Date型变为CustomDate型十,可以调用成员转换函数;反之可以调用转换构造函数。

  不能既在Date类中定义成员转换函数,又在CustomDate类里定义转换构造函数。那样编译器在进行转换时就不知道该调用哪一个函数,从而出错。

扫描/长按二维码帮助考试通关
2018年等考报考资讯
2018等考各科通关技巧
2018各科最新预测试卷
2018等考各科备考资料

微信搜索"考试吧"了解更多考试资讯、下载备考资料

  相关推荐:

  2018年全国计算机等级考试必做试题汇总(各科目)

  2018年全国计算机等级考试复习知识点汇总(各科目)

  2018年全国计算机等级考试时间|教材目录(2018年版)

  2018全国计算机等级考试备考经验及应试技巧汇总

  考试内容|考试大纲|2018计算机等级考试科目

  历年真题汇总|考试吧策划:2018年计算机等级考试报考指南

0
收藏该文章
0
收藏该文章
文章搜索
万题库小程序
万题库小程序
·章节视频 ·章节练习
·免费真题 ·模考试题
微信扫码,立即获取!
扫码免费使用
版权声明:如果计算机等级考试网所转载内容不慎侵犯了您的权益,请与我们联系800@exam8.com,我们将会及时处理。如转载本计算机等级考试网内容,请注明出处。
Copyright © 2004- 考试吧计算机等级考试网 出版物经营许可证新出发京批字第直170033号 
京ICP证060677 京ICP备05005269号 中国科学院研究生院权威支持(北京)
在线模拟试题
考证通关杀器
考试最新资讯
一次通关技巧