全国计算机二级C++知识点:转换发生的情形
2018-10-31 11:17:29 来源:233网校

转换发生的情形

上面的几个例子都是通过不能类型对象之间的相互赋值来调用转换函数,还有几种调用的可能:

参数传递

初始化

返回值

表达式语句

这些情况下,都有可能调用转换函数。

下面的程序不难理解,就不分析了。

#include iostream.h

class CustomDate

{

public:

int da, yr;

CustomDate() {}

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

void display()

{

cout< }

};

class Date

{

int mo, da, yr;

public:

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

operator CustomDate();

};

Date::operator CustomDate()

{

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

CustomDate cd(0,yr);

for (int i=0;i cd.da+=da;

return cd;

}

class Tester

{

CustomDate cd;

public:

explicit Tester(CustomDate c) { cd=c; }

void display() { cd.display(); }

};

void dispdate(CustomDate cd)

{

cd.display();

}

CustomDate rtndate()

{

Date dt(9,11,1);

return dt;

}

int main()

{

Date dt(12,24,3);

CustomDate cd;

cd = dt;

cd.display();

dispdate(dt);

Tester ts(dt);

ts.display();

cd = rtndate();

cd.display();

return 0;

}