【C++总结】运算符重载
2015-06-01 17:18
323 查看
常规的运算符只能计算基本类型的变相,没办法将对象相加或者相减
要想能实现对象的运算,必须要重载运算符
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; }
相关文章推荐
- C语言数组赋值一例
- C++ STL中哈希表 hash_map介绍
- C++学习路线
- C语言笔记(五)
- Android新增C/C++语言支持:应用开发更快
- c++回调函数
- C语言笔记(四)
- 【C语言探索之旅】 第三部分第一课:SDL开发游戏之安装SDL
- 【C语言探索之旅】 第三部分第一课:SDL开发游戏之安装SDL
- Go与C语言的互操作
- 斐波那契实现
- 黑马程序员——C语言基础——冒泡排序算法探究
- C++拷贝构造函数
- Windows下,Netbeans使用C++的配置方法
- C语言笔记(三)
- VC++例说Windows窗口、视口以及GDI映射模式
- 嵌入式C语言高级_内存空间 笔记
- 钢条切割问题的解法(C/C++)
- C++作用域、内存分区的汇总
- C++ delete错误