C++ - 操作运算符
一、操作运算符
操作运算符:在C++中,编译器有能力将数据、对象和操作符共同组成表达式,解释为对全局或成员函数的调用
该全局或成员函数被称为操作符函数,程序员可以通过重定义函数操作符函数,来达到自己想要的效果
二、友元函数
友元函数就是使函数在全局变量定义,在类中需要调用,因此此函数在类中声明时需要在函数的头部添加friend属性
1、如果在类中声明友元函数,那么友元函数可以查看类中的所有成员
2、友元函数不是成员,因此不能直接访问成员变量
三、单目运算符 ++/--
全局函数:如果运算为:a++,那么在全局函数中定义为:类型 operater ++ (类名)
成员函数:如果运算为:a++,那么在成员函数中定义为:类型 operater ++ (void)
注意:在全局函数中定义,一定要在类中写入友元函数的声明,如果是要定义成员函数++a的话,需要将参数列表的 void 改为 int 即可,全局函数也是如此

四、双目运算符 / + - * % | ^ & += -= *= /= ...
全局函数:如果运算为:a-b,那么在全局函数中定义为:类型 operater - (类名 名字,类名 名字)
成员函数:如果运算为:a-b,那么在成员函数中定义为:类型 operater - (类名 名字)
注:具体返回类型为指针要是引用根据情况而论
下图的例子就是在全局定义,在类中声明的友元函数

五、输入输出运算符
注意:输入、输出运算符不能重载为成员函数,只能是友元。因此只能全局定义
全局函数输出流运算符定义 ostream& operator << (ostream& os,Point& p)
{ }
全局函数输入流运算符定义 istream& operator >> (istream& is,Point& p)
{ }
六、运算符的总结
只能当做成员函数的操作符函数
1、[] 下标运算符,可以把对象当作数组来使用。
2、() 函数运算符,可以把对象当作函数来使用。
3、-> 成员访问运算符,可以把对象当作指针来使用。
4、* 解引用运算符,可以把对象当作指针来使用。
只能当做全局函数的操作符函数
1、输入流运算符函数
2、输出流运算符函数
C++ - 操作运算符的更多相关文章
- Swift开发第六篇——操作运算符也可以重载& func 的参数修饰
本篇分为两部分: 1.Swift 中重载操作运算符的使用 2.Swfit 中 func 的参数修饰 1.Swift 中重载操作运算符的使用 与别的语言不同,Swift 支持运算符的重载,运算符指的是“ ...
- c++类流操作运算符的重定义
对于流操作运算符我们需要注意的是函数的返回类型应该是流输入类型的引用或者流输出类型的引用,因为如果代码是 cout<<a<<b; 我们对a执行完cout函数之后,我们应该再次将 ...
- VHDL操作运算符的优先级顺序
- c 语言的位运算符复习
转载和修正,原文连接:http://www.cnblogs.com/911/archive/2008/05/20/1203477.html 位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进 ...
- iOS阶段学习第三天笔记(运算符)
iOS学习(C语言)知识点整理笔记 1.运算符 一.算术运算符 1)表达式由变量.常量.运算符构成,有确定的类型和值 2)算术运算符包括: +(加),-(减),*(乘),/(除),%(模) 3)算术运 ...
- SQL Server调优系列基础篇(常用运算符总结——三种物理连接方式剖析)
前言 上一篇我们介绍了如何查看查询计划,本篇将介绍在我们查看的查询计划时的分析技巧,以及几种我们常用的运算符优化技巧,同样侧重基础知识的掌握. 通过本篇可以了解我们平常所写的T-SQL语句,在SQL ...
- SQL Server调优系列基础篇(联合运算符总结)
前言 上两篇文章我们介绍了查看查询计划的方式,以及一些常用的连接运算符的优化技巧,本篇我们总结联合运算符的使用方式和优化技巧. 废话少说,直接进入本篇的主题. 技术准备 基于SQL Server200 ...
- c/c++面试题(6)运算符重载详解
1.操作符函数: 在特定条件下,编译器有能力把一个由操作数和操作符共同组成的表达式,解释为对 一个全局或成员函数的调用,该全局或成员函数被称为操作符函数.该全局或成员函数 被称为操作符函数.通过定义操 ...
- mysql常见的运算符及使用
mysql中有4类运算符,它们是: 算术运算符 比较运算符 逻辑运算符 位操作运算符 算术操作符 算术操作符是SQL中最基本的操作运算符,主要有一下几种运算符: +(加). -(减). *(乘). / ...
随机推荐
- 【Qt开发】Qt控件之进度条
QT 进度条操作实例是本文要介绍的内容,在QT中可以用QProgressBar或着QProgressDialog来实现进度条. QProgressBar的使用 首先在designer中拖一个按钮和 ...
- Oracle中的=:
dept_code=:dCode =:在这里的意思是变量绑定
- Maven - 配置setting.xml
1.配置本地库路径 <localRepository>C:/fyliu/mvn/repo</localRepository> 2.配置中央仓库 <mirror> & ...
- springboot -- 2.0版本自定义ReidsCacheManager的改变
1. 问题发现 在1.0版本中,我们配置redis的cacheManager是这种方式: //缓存管理器 @Bean public CacheManager cacheManager(@Suppres ...
- Vue.js官方文档学习笔记(三)创建Vue实例
创建Vue实例 每个 Vue 应用都是通过用 Vue 函数创建一个新的 Vue 实例开始的: var vm=new Vue({ //选项 }) Vue的设计受到了mvvm的启发 当创建一个 Vue 实 ...
- 洛谷 P1484 种树 题解
题面 这是一道标准的带反悔贪心: 利用大根堆来维护最大值: 当选择了num[i]后,反悔了,反之选择选了num[i-1]和num[i+1]时获利便增加了num[i-1]+num[i+1]-num[i] ...
- 【iOS】正則表達式抓取网页数据制作小词典
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/xn4545945/article/details/37684127 应用程序不一定要自己去提供数据. ...
- js自执行函数
5.1对于函数表达式,在后面加括号即可以让函数立即执行:例如下面这个函数,至于为什么加了括号就可以立即执行,我们可以这么理解,就是像fn1():这样写的话,函数 可以立即执行是没问题的,我们在经常会用 ...
- 使用Lombok来优雅的编码
介绍在项目中使用Lombok可以减少很多重复代码的书写.比如说getter/setter/toString等方法的编写. IDEA中的安装打开IDEA的Setting –> 选择Plugins选 ...
- Redis重新配置集群
如果要重新配置集群,先停止集群,然后将cluster-config-file配置的所有文件删除,再重新启动集群,就可以重新配置集群 如果提示[ERR] Node 192.168.2.17:7000 i ...