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中最基本的操作运算符,主要有一下几种运算符: +(加). -(减). *(乘). / ...
随机推荐
- djangourl进阶
- 如何在linux下安装idea
[通过官方安装包安装] 在 http://www.jetbrains.com/ 官网下载对应版本. ultimate 旗舰版 community 社区版 然后解压到本地对应目录,打开idea目录下的b ...
- 第七周作业&实验报告5
实验四 类的继承 实验目的 理解抽象类与接口的使用: 了解包的作用,掌握包的设计方法. 实验要求 掌握使用抽象类的方法. 掌握使用系统接口的技术和创建自定义接口的方法. 了解 Java 系统包的结 ...
- 移除list里面的值
public class IteratorTest { public static void main(String[] args) { List<String> list = new A ...
- dp常见优化方法
noip范围内的dp优化方法: 加速状态转移 1.前缀和优化 2.单调队列优化 3.线段树或树状数组优化 精简状态 3:精简状态往往是通过对题目本身性质的分析,去省掉一些冗余的状态.相对以上三条套路性 ...
- 直线的Bresenham算法
在实验课上用自己的算法画直线被diss效率低 花了半天时间看了下Bresenham算法真
- Win10下编译OpenJDK8
导航目录 Win10下编译OpenJDK8 相关参考文章 编译环境 编译前准备 1.安装 Visual Studio 2010 Professional 2. 准备OpenJDK8 3. 编译JDK环 ...
- ldd - 显示共享库的依赖情况
总览 (SYNOPSIS) ldd [-vVdr] program ... 描述 (DESCRIPTION) ldd 显示 每个 程序 需要 的 共享库 (shared library), 程序名 在 ...
- mongoose 开源http库
Mongoose是一个用C编写的网络库.它为客户端和服务器模式实现TCP,UDP,HTTP,WebSocket,CoAP,MQTT的事件驱动的非阻塞API. 设计理念: Mongoose有三个基本的数 ...
- 005-监控项item详解,手动创建item实例
模板里的监控项都可以用 zabbix-get 命令执行 来获取相应的值,方法如下: [root@linux-node2 ~]# zabbix_get -s 192.168.1.230 -k agent ...