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; }