C++第5次作业
运算符重载
定义
- 运算符重载是对已有的运算符赋予多重含义,使同一个运算符作用于不同类型的数据时导致不同行为。
运算符重载规则
- 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次作业的更多相关文章
- python10作业思路及源码:类Fabric主机管理程序开发(仅供参考)
类Fabric主机管理程序开发 一,作业要求 1, 运行程序列出主机组或者主机列表(已完成) 2,选择指定主机或主机组(已完成) 3,选择主机或主机组传送文件(上传/下载)(已完成) 4,充分使用多线 ...
- SQLServer2005创建定时作业任务
SQLServer定时作业任务:即数据库自动按照定时执行的作业任务,具有周期性不需要人工干预的特点 创建步骤:(使用最高权限的账户登录--sa) 一.启动SQL Server代理(SQL Server ...
- 使用T-SQL找出执行时间过长的作业
有些时候,有些作业遇到问题执行时间过长,因此我写了一个脚本可以根据历史记录,找出执行时间过长的作业,在监控中就可以及时发现这些作业并尽早解决,代码如下: SELECT sj.name , ...
- T-SQL检查停止的复制作业代理,并启动
有时候搭建的复制在作业比较多的时候,会因为某些情况导致代理停止或出错,如果分发代理时间停止稍微过长可能导致复制延期,从而需要从新初始化复制,带来问题.因此我写了一个脚本定期检查处于停止状态的分 ...
- Python09作业思路及源码:高级FTP服务器开发(仅供参考)
高级FTP服务器开发 一,作业要求 高级FTP服务器开发 用户加密认证(完成) 多用户同时登陆(完成) 每个用户有不同家目录且只能访问自己的家目录(完成) 对用户进行磁盘配额,不同用户配额可不同(完成 ...
- 个人作业week3——代码复审
1. 软件工程师的成长 感想 看了这么多博客,收获颇丰.一方面是对大牛们的计算机之路有了一定的了解,另一方面还是态度最重要,或者说用不用功最重要.这些博客里好些都是九几年或者零几年就开始学习编 ...
- 个人作业-week2:关于微软必应词典的案例分析
第一部分 调研,评测 评测基于微软必应词典Android5.2.2客户端,手机型号为MI NOTE LTE,Android版本为6.0.1. 软件bug:关于这方面,其实有一些疑问.因为相对于市面上其 ...
- 软件工程第二次作业——git的使用
1. 参照 http://www.cnblogs.com/xinz/p/3803109.html 的第一题,每人建立一个GitHub账号,组长建立一个Project,将本组成员纳入此Porject中的 ...
- hadoop作业调度策略
一个Mapreduce作业是通过JobClient向master的JobTasker提交的(JobTasker一直在等待JobClient通过RPC协议提交作业),JobTasker接到JobClie ...
- SQL SERVER 2008复制数据库时发生执行SQL Server代理作业错误
1. 情况说明 在利用SQL SERVER数据库复制向导,能够很方便的将一个数据库从一台服务器复制到另一台服务器上,具体操作步骤也十分简单. 不过在实际操作过程常发生“执行SQL SERVER代理作业 ...
随机推荐
- 洛谷P1062 数列 [2017年6月计划 数论03]
P1062 数列 题目描述 给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是: 1,3,4,9,10,12,13,… ...
- thinkcmf 导航高亮制作方法(适用于多级导航)(通用)
平时用thinkcmf网站开发经常需要导航点击之后高亮,就写了一些实现方法分享一下. 思路很简单,先获取当前页面的顶级栏目的地址,然后与导航中的地址比较,相同的就加上一个class,把下面函数理解了不 ...
- JavaScript实现无缝滚动 原理详细讲解
先了解一下对象的几个的属性: innerHTML: 设置或获取位于对象起始和结束标签内的 HTML scrollHeight: 获取对象的滚动高度. scrollLeft: 设置或获取位于对象左边界和 ...
- 说说a标签的onclick和href
在平时我们一般会在列表中的最后一列给加上操作功能,一般的操作功能是修改和删除,这个操作我们可以通过a标签来实现其功能. <a class="pn-opt" href=&quo ...
- Thinkphp 不足之处
1.报错机制 //控制器里面直接输出如下内容,代码不提示.TP报错机制已经开启 echo $aaaaaa; bbbbbbbbb; eco bbbbbbbb; 正常应该给出以下提示 Notice: Un ...
- Hdu 1156
题目链接 Brownie Points II Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java ...
- win10下安装mongodb(解压版)
首先到官网下载安装包.(https://www.mongodb.com/download-center#community) 1.创建mongodb目录 2.配置文件mongodb.config 3. ...
- Vue.之. 动态设置按钮Disabled
Vue.之. 动态设置按钮Disabled 按钮代码如下: 添加了一个 属性 :disabled="isAble" ,控制:更新按钮.重置按钮 <el-form- ...
- 廖雪峰Python总结4
面向对象编程 将计算机程序视为一系列的命令集合.包含: 数据 操作数据的函数 Python中,所有的数据类型都可以视为对象. 面向对象特点:封装,继承,多态. 类的函数和普通函数:类的第一个参数永远是 ...
- LintCode_167 链表求和
题目 你有两个用链表代表的整数,其中每个节点包含一个数字.数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头.写出一个函数将两个整数相加,用链表形式返回和. 样例 给出两个链表 3-&g ...