二级C++试题关于类的转换,了解一下!

发布于 2018-09-26 11:43  编辑:大黎
0
计算机等级考试题库 扫码微信刷题

天行健,君子以自强不息;地势坤,君子以厚德载物。朝着计算机等级考试的方向前进,和小编一起复习二级C++试题吧。



类的转换

上面两个例子都是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类里定义转换构造函数。那样编译器在进行转换时就不知道该调用哪一个函数,从而出错。

 

 

 

 

 

我从不怀疑自己的能力,只怀疑自己有没有努力。想要获得更多二级C++试题请搜索计算机等级考试题库或下戳↓↓↓链接。

 

文章推荐:

全国计算机等级考试可以不考一级直接考二级吗?

2018年全国计算机等级考试题库二级MS Office 高级应用考试大纲

全国计算机等级考试报考成功后可以退费吗?(内附计算机等级考试题库)

 

 

温馨提示:

考试想拿高分吗?更多计算机等级考试题库二级ms office试题请点击查看>>>二级ms office

想要了解更多的计算机等级考试题库请点击下载>>>计算机等级考试题库

想知道更多关于计算机等级考试题库的最新资讯吗?点击进入>>>计算机等级考试题库资讯


本文网址:http://www.k51.com.cn/info/jsjdjks/1809/2648823.html
选择分享到: