您的位置:首页 > 编程语言 > C语言/C++

C++中operator的主要用法

2012-06-12 22:06 274 查看
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;

}

}

转自:http://blog.sina.com.cn/s/blog_6ac4a2d3010127cl.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: