运算符重载

定义

- 运算符重载是对已有的运算符赋予多重含义,使同一个运算符作用于不同类型的数据时导致不同行为。

运算符重载规则

- C++运算符除了少数几个,全都可以重载,且只能重载C++已有的运算符;
- 重载后其优先级和结合性不会改变;
- 重载的功能应当与原有功能类似,不能改变原运算符的操作对象个数,同时至少要有一个操作对象是自定义类型;

返回类型 operator 运算符(形参表)

{

函数体

}

运算符重载为成员函数

//重载 + , -

#include<iostream>

using namespace std;

class Point
{
private:
int x, y;
public:
Point()
{
x = 0;
y = 0;
}
Point(int a, int b) : x(a), y(b) {}
Point operator+(Point& p)
{
return Point(x + p.x, y + p.y);
}
Point operator-(Point& p)
{
return Point(x - p.x, y - p.y);
}
void display() { cout << x << " " << y << endl; }
};
int main()
{
Point a(3, 4);
Point b(4, 5);
Point c ;
c = a + b;
Point d = b - a;
c.display();
d.display();
}

结果:

//重载++, --

#include<iostream>

using namespace std;

class Point
{
private:
int x, y;
public:
Point()
{
x = 0;
y = 0;
}
Point(int a, int b) : x(a), y(b) {}
Point operator++()
{
this->x++;
this->y++;
return *this;
}
Point operator++(int)
{
Point old = *this;
++(*this);
return old;
}
Point operator--()
{
this->x--;
this->y--;
return *this;
}
Point operator--(int)
{
Point old = *this;
--(*this);
return old;
}
void display() { cout << x << " " << y << endl; }
};
int main()
{
Point a(3, 4);
a.display();
(a++).display();
a.display();
(++a).display();
cout << "--------" << endl;
a.display();
(a--).display();
a.display();
(--a).display();
return 0;
}

结果:

运算符重载为非成员函数

//对+, - 进行非成员函数重载

#include<iostream>

using namespace std;

class Point
{
private:
int x, y;
public:
Point()
{
x = 0;
y = 0;
}
Point(int a, int b) : x(a), y(b) {}
friend Point operator+(Point& a, Point& b)
{
return Point(a.x + b.x, a.y + b.y);
}
friend Point operator-(Point& a, Point& b)
{
return Point(a.x - b.x, a.y - b.y);
}
void display() { cout << x << " " << y << endl; }
};
int main()
{
Point a(3, 4);
Point b(4, 4);
Point c = a + b;
c.display();
}

结果:

C++第5次作业的更多相关文章

  1. python10作业思路及源码:类Fabric主机管理程序开发(仅供参考)

    类Fabric主机管理程序开发 一,作业要求 1, 运行程序列出主机组或者主机列表(已完成) 2,选择指定主机或主机组(已完成) 3,选择主机或主机组传送文件(上传/下载)(已完成) 4,充分使用多线 ...

  2. SQLServer2005创建定时作业任务

    SQLServer定时作业任务:即数据库自动按照定时执行的作业任务,具有周期性不需要人工干预的特点 创建步骤:(使用最高权限的账户登录--sa) 一.启动SQL Server代理(SQL Server ...

  3. 使用T-SQL找出执行时间过长的作业

        有些时候,有些作业遇到问题执行时间过长,因此我写了一个脚本可以根据历史记录,找出执行时间过长的作业,在监控中就可以及时发现这些作业并尽早解决,代码如下:   SELECT sj.name , ...

  4. T-SQL检查停止的复制作业代理,并启动

        有时候搭建的复制在作业比较多的时候,会因为某些情况导致代理停止或出错,如果分发代理时间停止稍微过长可能导致复制延期,从而需要从新初始化复制,带来问题.因此我写了一个脚本定期检查处于停止状态的分 ...

  5. Python09作业思路及源码:高级FTP服务器开发(仅供参考)

    高级FTP服务器开发 一,作业要求 高级FTP服务器开发 用户加密认证(完成) 多用户同时登陆(完成) 每个用户有不同家目录且只能访问自己的家目录(完成) 对用户进行磁盘配额,不同用户配额可不同(完成 ...

  6. 个人作业week3——代码复审

    1.     软件工程师的成长 感想 看了这么多博客,收获颇丰.一方面是对大牛们的计算机之路有了一定的了解,另一方面还是态度最重要,或者说用不用功最重要.这些博客里好些都是九几年或者零几年就开始学习编 ...

  7. 个人作业-week2:关于微软必应词典的案例分析

    第一部分 调研,评测 评测基于微软必应词典Android5.2.2客户端,手机型号为MI NOTE LTE,Android版本为6.0.1. 软件bug:关于这方面,其实有一些疑问.因为相对于市面上其 ...

  8. 软件工程第二次作业——git的使用

    1. 参照 http://www.cnblogs.com/xinz/p/3803109.html 的第一题,每人建立一个GitHub账号,组长建立一个Project,将本组成员纳入此Porject中的 ...

  9. hadoop作业调度策略

    一个Mapreduce作业是通过JobClient向master的JobTasker提交的(JobTasker一直在等待JobClient通过RPC协议提交作业),JobTasker接到JobClie ...

  10. SQL SERVER 2008复制数据库时发生执行SQL Server代理作业错误

    1. 情况说明 在利用SQL SERVER数据库复制向导,能够很方便的将一个数据库从一台服务器复制到另一台服务器上,具体操作步骤也十分简单. 不过在实际操作过程常发生“执行SQL SERVER代理作业 ...

随机推荐

  1. Google earth爬取卫星影像数据并进行标注路网的方法

    一.下载goole earth 和GetScreen: 试了很多,找了可以使用的上传到百度网盘,链接如下所示: 链接:https://pan.baidu.com/s/1fp-W8u68iRsJ0xcu ...

  2. 【笔记】LR录制方式和常用函数

    本文为本人复习LR时,笔记整理.以备后续查阅. 注意:录制脚本时,选择不同的协议下录制时设置选项也是不相同的,我们这里介绍的是基于协议web(http/html)录制选项设置. 对于web(http/ ...

  3. arcgis人口专题图

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  4. go 文件操作 io

    package main import ( "fmt" "os" ) func main() { //打开文件 //概念说明: file 的叫法 //1. fi ...

  5. Web渗透三字经

    网络上曾流传一段Web渗透三字经,如下: 用搜索 找注入 没注入 就旁注 没旁注 用0day 没0day 扫目录 找后台 爆账户 传小马 放大马 拿权限 挂页面 放暗链 清数据 清日志 留后门 然后我 ...

  6. 利用ajax异步校验验证码(转)

    利用ajax异步校验验证码 示例结果如图所示 具体步骤如下: step1: jsp页面及js脚本 <%@page pageEncoding="utf-8" contentTy ...

  7. SPSS分析技术:无序多元Logistic回归模型;美国总统大选的预测历史及预测模型

    SPSS分析技术:无序多元Logistic回归模型:美国总统大选的预测历史及预测模型 在介绍有序多元Logistic回归分析的理论基础时,介绍过该模型公式有一个非常重要的假设,就是自变量对因变量多个类 ...

  8. jmeter使用Badboy录制、检查点和参数化

    jmeter使用Badboy录制 1.打开Badboy,在地址栏输入需要录制的网址,如:百度首页

  9. SDUT-2498_AOE网上的关键路径

    数据结构实验之图论十一:AOE网上的关键路径 Time Limit: 2000 ms Memory Limit: 65536 KiB Problem Description 一个无环的有向图称为无环图 ...

  10. yum install mysql-devel

    linux系统在装mysql相关的包时要先装mysql-deval,这个包包含mysql的相关配置和环境组件 执行yum install mysql-deval