class CWindowWnd
{
public:
operator HWND() const;
pirvate:
HWND m_hWnd;
};
CWindowWnd::operator HWND() const
{
return m_hWnd;
}
operator用于类型转换函数,用来定义隐式的类型转换
类型转换函数的特征:
1)
2)
3)
类型转换函数主要有两类:
1)
2) 对象向不同类的对象的转换:
例程1:
//通过类型转换函数求半径为5的圆的面积
//并将其存储在float型变量中打印输出
#include <iostream>
using namespace std;
class CArea
{
float area;
public:
CArea()
{
area=0;
}
CArea(float a) //重载含有一个参数的构造函数
{
area=a;
}
void getArea()
{
cout<<area<<endl;
}
void setArea(float a)
{
area=a;
}
operator float() //类型转换函数
{
//将面积类对象转换为float型数据
return area;
}
};
class CCircle
{
float R;
public:
void getR()
{
cout<<R<<endl;
}
void setR(float r)
{
R=r;
}
operator CArea() //类型转换函数
{ //将圆类对象转为面积类对象
float area=3.1415926*R*R;
return (CArea(area));
}
};
void main()
{
CCircle cir;
CArea are;
float a;
cir.setR(5);
cir.getR(); //打印圆的半径
are.getArea(); //打印转换前的面积
are=cir; //将圆类对象转为面积类对象
are.getArea(); //打印转换后的面积
a=are; //将面积类对象转换为float型数据
cout<<a<<endl;
}