题目:什么是类型转换构造函数
【答案】
一个类的构造函数只有一个参数,而且这个参数不是该类的类型而是其他类型,这个构造函数就被称为类型转换构造函数。转换构造函数可以用来处理不同域的同一个数据值。
示例代码:
class Polar
{
private:
double radius;
double angle;
public:
Polar()
{
radius=0.0;
angle=0.0;
}
Polar(double r,double a)
{
radius=r;
angle=a;
}
void display()
{
cout<<"("<<radius<<","<<angle<<")";
}
double getr()
{
return radius;
}
double geta()
{
return angle;
}
};
class Rec
{
private:
double xco;
double yco;
public:
Rec()
{
xco=0.0;
yco=0.0;
}
Rec(Polar p)
{//由于Polar类的radius和angle是私有的,能通过转换构造函数来提取数值。
float r=(float)p.getr();
float a=(float)p.geta();
xco=r*cos(a);
yco=r*sin(a);
}
void display()
{
cout<<"("<<xco<<","<<yco<<")";
}
};
int main()
{
Rec rec;
Polar pol(10.0,0.785398);
rec=pol;//使用转换函数(或rec=Rec(pol))
cout<<"\Pol=";
pol.display();
cout<<"\nRec=";
rec.display();
return 0;
}