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

C++中operator的主要用法相关推荐

  1. python中sorted_Python中sorted()方法的用法

    Python中sorted()方法的用法 2012-12-24 22:01:14| 分类: Python |字号 1.先说一下iterable,中文意思是迭代器. Python的帮助文档中对itera ...

  2. Python中的解包用法

    Python中的解包用法 解包(unpacking:解包,拆包),基本意思将容器里面的元素逐个取出来使用.封包(packing:封包,打包)基本意思将多个元素合起来作为一个整体使用. 可迭代对象支持解 ...

  3. C++中 cin 的详细用法

    1.cin 简介 cin是C++编程语言中的标准输入流对象,即istream类的对象.cin主要用于从标准输入读取数据,这里的标准输入,指的是终端的键盘.此外,cout是流的对象,即ostream类的 ...

  4. PHP中魔术方法的用法

    PHP中魔术方法的用法 /** PHP把所有以__(两个下划线)开头的类方法当成魔术方法.所以你定义自己的类方法时,不要以 __为前缀. * */// __toString.__set.__get__ ...

  5. 简单介绍SQLserver中的declare变量用法

    这篇文章主要介绍了SQLserver中的declare变量用法,sql中declare是声明的意思,就是声明变量的,这个一般是用在函数和存储过程中的.感兴趣的可以来了解一下 平时写SQL查询.存储过程 ...

  6. python的继承用法_【后端开发】python中继承有什么用法?python继承的用法详解

    本篇文章给大家带来的内容是关于python中继承有什么用法?python继承的用法详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 面向对象三大特征 1.封装:根据职责将属性和方法 ...

  7. 关于sql中case when的用法

    Oracle CASE WHEN 用法介绍 1. CASE WHEN 表达式有两种形式 --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ...

  8. 【node】express中mysql的基本用法、连接池的使用、事务的回滚

    [node]express中mysql的基本用法.连接池的使用 安装mysql包 mysql的配置信息 mysql基本操作 查询mysql并渲染数据 mysql插入操作 首先在html页面写上< ...

  9. git 只merge部分_[Skill]俩小时掌握多人开发中git的主要用法

    前言 几个月前看完了git文档,但是在实际开发中对很多git命令的具体影响仍有疑惑,比方说pull.fetch和rebase三个命令和检出位置拎不清. Git - Book​git-scm.com 安 ...

最新文章

  1. 中间件ROS/CyberRT/AutoSAR对比
  2. Java程序员年薪40W,他1年走了别人5年的路(技术提炼)
  3. 是时候重新定义安全了,阿里云肖力解读安全责任共担模型
  4. 终于有人把 Elasticsearch 原理讲透了
  5. python三目运算和递归的小练习
  6. C语言指针详解----指针声明定义赋值
  7. Android 动画 介绍与使用
  8. 单片机小白学步系列(五) 集成电路、封装相关知识
  9. Lucene.net 下载地址
  10. MyBatis 特殊字符处理
  11. 【手把手 脑把脑】教会你使用idea基于MapReduce的统计数据分析(从问题分析到代码编写)
  12. ComponentName
  13. 动态阈值_如何设置数据看板(大屏)数据异常报警的动态阈值
  14. 蓝牙耳机测试软件apk_延迟测试app下载-蓝牙耳机延迟测试软件下载v1.9.1- 游侠下载站...
  15. 觅伊、Soul,这些社交软件是怎么火起来的?
  16. 完整的计算机系统由硬件系统和应用程序组成,一个完整的计算机系统由哪两部分组成?各部分的功能主要是什么?...
  17. win10家庭版使用远程桌面方法
  18. 非系统管理员打开Internet Information Services (IIS)管理器
  19. iOS音频编程之实时语音通信
  20. 前端工程师成长之多看好书

热门文章

  1. HttpClient通过Post方式发送Json数据
  2. POJ 1273 Drainage Ditches 最大流
  3. 优化小技巧——复杂属性对象的read模式
  4. Imagination
  5. ASP.NET MVC3 中的AJAX
  6. 从DataTable导出Excel,并下载,删除Excel进程。
  7. 跨越解决方案之nginx
  8. Linux内核的裁剪和移植
  9. 看完Java的动态代理技术——Pythoner笑了
  10. HAProxy用法详解 全网最详细中文文档