C++中operator的主要用法
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的主要用法相关推荐
- python中sorted_Python中sorted()方法的用法
Python中sorted()方法的用法 2012-12-24 22:01:14| 分类: Python |字号 1.先说一下iterable,中文意思是迭代器. Python的帮助文档中对itera ...
- Python中的解包用法
Python中的解包用法 解包(unpacking:解包,拆包),基本意思将容器里面的元素逐个取出来使用.封包(packing:封包,打包)基本意思将多个元素合起来作为一个整体使用. 可迭代对象支持解 ...
- C++中 cin 的详细用法
1.cin 简介 cin是C++编程语言中的标准输入流对象,即istream类的对象.cin主要用于从标准输入读取数据,这里的标准输入,指的是终端的键盘.此外,cout是流的对象,即ostream类的 ...
- PHP中魔术方法的用法
PHP中魔术方法的用法 /** PHP把所有以__(两个下划线)开头的类方法当成魔术方法.所以你定义自己的类方法时,不要以 __为前缀. * */// __toString.__set.__get__ ...
- 简单介绍SQLserver中的declare变量用法
这篇文章主要介绍了SQLserver中的declare变量用法,sql中declare是声明的意思,就是声明变量的,这个一般是用在函数和存储过程中的.感兴趣的可以来了解一下 平时写SQL查询.存储过程 ...
- python的继承用法_【后端开发】python中继承有什么用法?python继承的用法详解
本篇文章给大家带来的内容是关于python中继承有什么用法?python继承的用法详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 面向对象三大特征 1.封装:根据职责将属性和方法 ...
- 关于sql中case when的用法
Oracle CASE WHEN 用法介绍 1. CASE WHEN 表达式有两种形式 --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ...
- 【node】express中mysql的基本用法、连接池的使用、事务的回滚
[node]express中mysql的基本用法.连接池的使用 安装mysql包 mysql的配置信息 mysql基本操作 查询mysql并渲染数据 mysql插入操作 首先在html页面写上< ...
- git 只merge部分_[Skill]俩小时掌握多人开发中git的主要用法
前言 几个月前看完了git文档,但是在实际开发中对很多git命令的具体影响仍有疑惑,比方说pull.fetch和rebase三个命令和检出位置拎不清. Git - Bookgit-scm.com 安 ...
最新文章
- 中间件ROS/CyberRT/AutoSAR对比
- Java程序员年薪40W,他1年走了别人5年的路(技术提炼)
- 是时候重新定义安全了,阿里云肖力解读安全责任共担模型
- 终于有人把 Elasticsearch 原理讲透了
- python三目运算和递归的小练习
- C语言指针详解----指针声明定义赋值
- Android 动画 介绍与使用
- 单片机小白学步系列(五) 集成电路、封装相关知识
- Lucene.net 下载地址
- MyBatis 特殊字符处理
- 【手把手 脑把脑】教会你使用idea基于MapReduce的统计数据分析(从问题分析到代码编写)
- ComponentName
- 动态阈值_如何设置数据看板(大屏)数据异常报警的动态阈值
- 蓝牙耳机测试软件apk_延迟测试app下载-蓝牙耳机延迟测试软件下载v1.9.1- 游侠下载站...
- 觅伊、Soul,这些社交软件是怎么火起来的?
- 完整的计算机系统由硬件系统和应用程序组成,一个完整的计算机系统由哪两部分组成?各部分的功能主要是什么?...
- win10家庭版使用远程桌面方法
- 非系统管理员打开Internet Information Services (IIS)管理器
- iOS音频编程之实时语音通信
- 前端工程师成长之多看好书