C++二目运算符重载
来源:互联网 发布:跳跃表c语言 编辑:程序博客网 时间:2024/05/16 11:09
/*======================================================================模板:1、模板函数 <-----> 模板类|v标准模板类2、友元函数友元类3、静态成员函数静态数据成员4、运算符重载========================================================================运算符重载二元运算符重载+号运算符 成员函数重载传入一个参数作为第二个参数 第一个参数默认是当前对象的参数输出运算符 第一个参数必须是ostream 所以不能是默认的对象参数 不能使用成员函数进行重载[]索引运算符 不能使用友元函数重载 因为第一个参数必须是当前对象的this指针。=======================================================================*/#include <iostream>#include <string>using namespace std;class Coordinate{public:friend Coordinate operator ^ (Coordinate &coor1, Coordinate &coor2);friend ostream &operator<<(ostream &c1, Coordinate &c2);Coordinate(int x, int y){m_iX = x;m_iY = y;}//这里传入参数最好是引用 如果用指针的话 调用的时候+后面的对象要进行取地址Coordinate operator+(Coordinate &coor){Coordinate temp(0,0);temp.m_iX = this->m_iX + coor.m_iX;temp.m_iY = this->m_iY + coor.m_iY;return temp;}int operator[](int index){if (index == 0)return this->m_iX;if (index == 1)return this->m_iY;elsethrow string("未索引到!");}void print(){cout << m_iX << "" << m_iY << endl;}private:int m_iX;int m_iY;};ostream &operator<<(ostream &c1, Coordinate &c2){c1 << c2.m_iX << " " << c2.m_iY << endl;return c1;}Coordinate operator ^(Coordinate &coor1, Coordinate &coor2){Coordinate temp(1, 1);for (size_t i = 0; i < coor2.m_iX;i++)temp.m_iX = coor1.m_iX*temp.m_iX;for (size_t i = 0; i < coor2.m_iY; i++)temp.m_iY = coor1.m_iY*temp.m_iY;return temp;}int main(){Coordinate coor1(4, 2),coor2(5,6);Coordinate coor3 = coor1 ^ coor2;//coor3.print();cout << coor3;//相当于写成了operator<<(cout,coor3);try{cout << coor3[2] << endl;}catch(string s){cout << s << endl;}}
0 0
- C++——运算符重载(二)
- 【C/C++开发】运算符重载二
- C++-运算符重载
- [C++]重载运算符
- C#:运算符重载
- c++-++运算符重载
- C++:重载运算符
- 运算符重载(C++)
- [c++]运算符重载
- 【C++】运算符重载
- C++--------------------------------------------运算符重载
- C#:运算符重载
- C++:运算符重载
- C++:运算符重载
- C#:运算符重载
- [C++]运算符重载
- 【c++】运算符重载
- C++:运算符重载
- STM32启动文件分析
- QQ热修复原理地址
- Oracle学习笔记(二)
- Oracle计算时间差函数
- HDU 1274
- C++二目运算符重载
- ListView 中关于checkBox的复用出错问题,个人总结的
- 新浪微博分布式爬虫分享
- 蓝桥杯 兰顿蚂蚁
- 解决条目监听冲突
- 模态出来报错:Application tried to present modally an active controller
- Linux中环境变量文件及配置
- 用C++的string::size()和string::length()返回值做比较
- linxu 系统下关于多串口平台 串口号不匹配问题