计算机等级

计算机等级二级考试C++文章
北京上海天津重庆更多

2017计算机二级C++考试知识点(5)

2017年09月30日 16:48:18来源:计算机等级考试网
导读:坦途网计算机等级考试频道为应广大学员学习需求,在此为大家带来2017年全国计算机二级C++考试复习题,供考生参考。下面就让我们一起进入今天的学习主题吧!

>>计算机二级考试:2017计算机二级C++考试知识点(5)

>>全国计算机等级考试直通车

六、显式构造函数

注意上面Tester类的构造函数前面有一个explicit修饰符。如果不加上这个关键字,那么在需要把CustomDate对象转换成Tester对象时,编译器会把该函数当作转换构造函数来调用。但是有时候,并不想把这种只有一个参数的构造函数用于转换目的,而仅仅希望用它来显式地初始化对象,此时,就需要在构造函数前加explicit。如果在声明了Tester对象以后使用了下面的语句将导致一个错误:

ts=jd; //error

这个错误说明,虽然Tester类中有一个以Date型变量为参数的构造函数,编译器却不会把它看作是从Date到Tester的转换构造函数,因为它的声明中包含了explicit修饰符。

七、表达式内部的转换

在表达式内部,如果发现某个类型和需要的不一致,就会发生错误。数字类型的转换是很简单,这里就不举例了。下面的程序是把Date对象转换成长整型值。

#include iostream.h

class Date

{

int mo, da, yr;

public:

Date(int m,int d,int y)

{

mo=m; da=d; yr=y;

}

operator long();

};

Date::operator long()

{

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

long days=yr;

days*=365;

days+=(yr-1900)/4; //从1900年1月1日开始计算

for(int i=0;i days+=da;

return days;

}

int main()

{

Date today(12,24,2003);

const long ott=123;

long sum=ott+today;

cout< return 0;

}

在表达式中,当需要转换的对象可以转换成某个数字类型,或者表达式调用了作用于某个类的重载运算符时,就会发生隐式转换。运算符重载以后再学习。

如需了解更多,请继续锁定坦途网计算机等级考试网,更多精彩内容等你了解!

温馨提示:因考试政策、内容不断变化与调整,坦途网提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

计算机等级培训课程免费试听

预约免费体验课

教育顾问会第一时间安排您的体验课!

课程预约立即提交
最新文章
电话咨询在线咨询资料领取