1. operator 用于类型转换函数: 类型转换函数的特征: 1) 型转换函数定义在源类中; 2) 须由 operator 修饰,函数名称是目标类型名或目标类名; 3) 函数没有参数,没有返回值,但是有return 语句,在return语句中返回目标类型数据或调用目标类的构造函数。 类型转换函数主要有两类: 1) 对象向基本数据类型转换: 对象向不同类的对象的转换: 例程1: //通过类型转换函数求半径为5的圆的面积 //并将其存储在float型变量中打印输出 #i nclude <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; } 2. operator 用于操作符重载: 操作符重载的概念: 将现有操作符与一个成员函数相关联,并将该操作符与其成员对象(操作数)一起使用。 注意事项: 1) 重载不能改变操作符的基本功能,以及该操作符的优先级顺序。 2) 重载不应改变操作符的本来含义。 3) 只能对已有的操作符进行重载,而不能重载新符号。 4) 操作符重载只对类可用。 5) 以下运算符不能被重载: . 原点操作符(成员访问符) * 指向成员的指针 :: 作用域解析符 ? : 问号条件运算符 sizeof 操作数的字节数 操作符函数的一般格式: return_type operator op(argument list); return_type:返回类型(要得到什么) op:要重载的操作符 argument list:参数列表(操作数有哪些) 例程2: //重载大于号操作符比较两个人的工资 #i nclude <iostream> using namespace std; class employee { int salary; public: void setSalary(int s) { salary=s; } void getSalary() { cout<<salary<<endl; } bool operator >(const employee & e)//重载大于号操作符 { if(salary > e.salary) return true; else return false; } }; void main() { employee emp1,emp2; emp1.setSalary(1000); emp2.setSalary(2000); if (emp1 > emp2) { cout<<"emp1比emp2工资高"<<endl; } else { cout<<"emlp1没有emp2工资高"<<endl; } }
C++operator用法.
最新推荐文章于 2024-07-31 14:30:49 发布