二级C++类的转换使用技巧?

发布于 2018-01-30 15:45  编辑:盘子
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类里定义转换构造函数。那样编译器在进行转换时就不知道该调用哪一个函数,从而出错.







考无忧小编推荐:

更多计算机等级考试真题及答案>>>点击查看

想知道更多关于计算机等级报考指南、考试时间和考试信息的最新资讯在这里>>>点击查看


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