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中最基本的操作运算符,主要有一下几种运算符: +(加). -(减). *(乘). / ...
随机推荐
- Linux 下面根据端口号 查询 可执行程序的路劲的方法
1. 安装上lsof 的包 2. 使用 lsof 命令查看相关进程 lsof -i: 效果为: 3. 根据/proc 的目录查看可执行目录的文件位置 ll /proc/procid # procid ...
- 在子类中,若要调用父类中被覆盖的方法,可以使用super关键字
在子类中,若要调用父类中被覆盖的方法,可以使用super关键字. package text; class Parent { int x; public Parent() { ...
- spark 常用设置
1.spark.hadoop.validateOutputSpecs 若设置为true,saveAsHadoopFile会验证输出目录是否存在.虽然设为false可直接覆盖文件路径
- 通过node指令自动创建一个package.json文件,并封装发布使用
通过node指令自动创建一个package.json文件,并封装发布使用:https://blog.csdn.net/scu_cindy/article/details/78208268
- 浅谈Javascript数据属性与访问器属性
ES5中对象的属性可以分为‘数据属性’和‘访问器属性’两种. 数据属性一般用于存储数据数值,访问器属性对应的是set/get操作,不能直接存储数据值. 数据属性特性:value.writable.en ...
- git推送新项目到github
1.首先在github上新建一个裸仓库 得到新仓库地址 2.打开本地要添加项目的目录,右键选择git bash,执行命令 (1)git init (2)git remote add origin ht ...
- phpstorm配置phpunit进行单元测试
1.配置单元测试目录: (1)autoload.php <?php function autoloader($dir){ spl_autoload_register(function($name ...
- P1398 [NOI2013]书法家
传送门 就是个普及组 $dp$ 合集,把 $NOI$ 从左到右拆成 $9$ 个部分,每个部分都可以分别 $dp$ 除了 $N$ 的中间部分比较恶心以外其他都还好,自己推一下然后就知道转移,就 $N$ ...
- JavaSE--抽象类、内部类、接口
一.抽象类 当事物不能具体描述时可将事物抽象化,只对其应有的行为进行简单的描述而不进行深度具体的描述,这样就产生了抽象类,使用abstract关键字对类进行修饰内部方法也是用abstract进行描述. ...
- JAVA中如何定义自定义注解
了解注解 注解是Java1.5,JDK5.0引用的技术,与类,接口,枚举处于同一层次 .它可以声明在包.类.字段.方法.局部变量.方法参数等的前面,用来对这些元素进行说明,注释 . 在Java中,自带 ...