【C++总结】运算符重载
来源:互联网 发布:mysql宕机 编辑:程序博客网 时间:2024/06/08 15:35
常规的运算符只能计算基本类型的变相,没办法将对象相加或者相减
Timer t1;Timer t2;t1 + t2;//t1和t2是对象,不能相加
要想能实现对象的运算,必须要重载运算符
成员函数形式重载运算符
重载运算符只需要把函数名换成operator+
const Timer operator+(Timer t);//重载+号运算符,调用的时候默认有个this形参const Timer Timer::operator+(Timer t) {//千万不能返回引用 Timer time; time.hour = this->hour + t.hour; time.minute = this->minute + t.minute; return time;}
使用友元函数形式重载运算符
使用友元函数形式的重载,参数形式要显示给出,成员函数是一个,这边就该是两个
friend const Timer operator-(Timer t1, Timer t2);//使用友元形式重载const Timer operator-(Timer t1, Timer t2) {//两个参数显示给出 Timer time; time.hour = t1.hour - t2.hour; time.minute = t1.minute - t2.minute; return time;}
重载<<输出操作符
使用友元形式。这样就可以直接输出对象。cout << t1;
friend const ostream& operator<<(ostream &os, Timer t);//可以直接输出对象const ostream& operator<<(ostream &os, Timer t) {//和java中toString一样 os << "时间是:" << t.hour << ":" << t.minute << endl; return os;}
综合例子
#include <iostream>using namespace std;class Timer {public: int hour; int minute;public: Timer(){} Timer(int hour, int minute):hour(hour), minute(minute) {} const Timer operator+(Timer t);//重载+号运算符 friend const Timer operator-(Timer t1, Timer t2);//重载-号运算符 friend const ostream& operator<<(ostream &os, Timer t);//重载<<};const Timer Timer::operator+(Timer t) { Timer time; time.hour = this->hour + t.hour; time.minute = this->minute + t.minute; return time;}const Timer operator-(Timer t1, Timer t2) { Timer time; time.hour = t1.hour - t2.hour; time.minute = t1.minute - t2.minute; return time;}const ostream& operator<<(ostream &os, Timer t) { os << "时间是:" << t.hour << ":" << t.minute << endl; return os;}int main() { Timer t1 = {2, 15}; Timer t2 = {3, 15}; Timer t3 = t1 + t2; cout << t3.hour << "-------" << t3.minute << endl; cout << t3; Timer t4 = t2 - t1; cout << t4.hour << "-------" << t4.minute << endl; cout << t4; return 0;}
0 0
- c 运算符重载总结
- C++_运算符重载 总结
- C++_运算符重载总结
- C++_运算符重载 总结
- C++_运算符重载 总结
- 运算符重载总结
- C++-运算符重载
- [C++]重载运算符
- C#:运算符重载
- c++-++运算符重载
- C++:重载运算符
- 运算符重载(C++)
- [c++]运算符重载
- 【C++】运算符重载
- C++--------------------------------------------运算符重载
- C#:运算符重载
- C++:运算符重载
- C++:运算符重载
- unicode下各种类型转换,CString,string,char*,int,char[]
- KVM创建虚拟机,并制作成镜像
- VxWorks、μClinux、μC/OS-II和eCos实时操作系统大对比
- 数据结构绪论
- linux getopt()函数使用说明
- 【C++总结】运算符重载
- 用SQL语句查询出姓名中有不是汉字的记录
- Xcode6 管理provisioning profile
- linux开机dracut#
- 解题报告 之 CodeForces 91B Queue
- 使用 AngularJS & NodeJS 实现基于 token 的认证应用
- webbench学习
- C语言字符串函数大全
- 时间日期类