operator 的一个用途是用于类型转换函数

类型转换函数的特征:

1  类型转换函数定义在源类中; 
2
  须由 operator 修饰,函数名称是目标类型名或目标类名; 
3
  函数没有参数,没有返回值,但是有return语句,在return语句中返回目标类型数据或调用目标类的构造函数。

类型转换函数主要有两类:

1  对象向基本数据类型转换:

2)   对象向不同类的对象的转换:

简单的例子

#include <iostream>

using namespace std;
class CArea
{
       float area;
public:
       CArea()
       {
              area=0;
       }
       CArea(float a)           //重载含有一个参数的构造函数
       {
              cout << "CArea(float a) " << endl; 
              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()   //类型转换函数
       {                  //将圆类对象转为面积类对象
              cout << "operator CArea()" << endl;
              float area=3.1415926*R*R;
              return (CArea(area));
       }    
};
void main()
{
       CCircle cir;
       CArea are;
       float a;
       cir.setR(5);
       cir.getR();              //打印圆的半径
       are.getArea();           //打印转换前的面积                   
     

       cout << endl;
       CArea are1 = cir;                 //将圆类对象转为面积类对象
       CArea are2 = cir.operator CArea();
       CArea are3 = CArea(cir);    //最终编译为  are = cir.operator CArea();  
       CArea are4 = (CArea)cir;    //最终编译为  are = cir.operator CArea();   

       cout << endl;
       are.getArea();           //打印转换后的面积    
       a=are;                   //将面积类对象转换为float型数据
       cout<<a<<endl;                    
}