c++运算符重载
来源:互联网 发布:jdk 7u79 windows x86 编辑:程序博客网 时间:2024/05/21 01:53
1 重载输出运算符
通常情况下,输出运算符的第一个形参为一个非常量ostream的引用。第二个形参一般来说为一个常量的引用。
operator<<一般要返回它的ostream形参
ostream &operator<<(ostream&out,const coordinte& coor){out<<coor.m_ix<<" "<<coor.m_iY;return out;}
2 重载输入运算符
istream &operator<<(istream&is,const coordinte& coor){is>>coor.m_ix>>" ">>coor.m_iY;return is;}
举例
(双目运算符)
//当数据成员为公有的情况下class coordinate{ //friend ostream &operator<<(ostream &out, const coordinate &coor);public: coordinate(int x, int y) { m_ix = x; m_iy = y; } int m_ix; int m_iy;};coordinate operator + (coordinate coor1, coordinate coor2)//加号运算符重载{ return coordinate(coor1.m_ix + coor2.m_ix, coor2.m_iy + coor1.m_iy);}ostream &operator<<(ostream &out, const coordinate &coor) //<<输出运算符重载{ out << coor.m_iy << coor.m_ix; return out;}int main(){ coordinate coor1(10, 20), coor2(20, 10), sum(0, 0); sum = coor1 + coor2; cout << sum << endl; system("pause");}
当数据成员为私有的情况下,可以采用如下两种方式:
1,友元函数重载
class coordinate{ friend ostream &operator<<(ostream &out, const coordinate &coor); friend coordinate operator + (coordinate coor1, coordinate coor2);//加上的两行代码(两个形参)public: coordinate(int x, int y) { m_ix = x; m_iy = y; }private: int m_ix; int m_iy;};coordinate operator + (coordinate coor1, coordinate coor2)//加号运算符重载{ return coordinate(coor1.m_ix + coor2.m_ix, coor2.m_iy + coor1.m_iy);}ostream &operator<<(ostream &out, const coordinate &coor) //<<输出运算符重载{ out << coor.m_iy << coor.m_ix; return out;}
2,类外定义
class coordinate{ friend ostream &operator<<(ostream &out, const coordinate &coor);public: coordinate(int x, int y) { m_ix = x; m_iy = y; } coordinate operator + (coordinate coor);private: int m_ix; int m_iy;};coordinate coordinate::operator + (coordinate coor1)//加号运算符重载(注意一个形参){ return coordinate(coor1.m_ix + m_ix, coor1.m_iy + m_iy);//等价于return coordinate(coor1.m_ix + this->m_ix, coor1.m_iy + this->m_iy);}ostream &operator<<(ostream &out, const coordinate &coor) //<<输出运算符重载{ out << coor.m_iy << coor.m_ix; return out;}int main(){ coordinate coor1(10, 20), coor2(20, 10), sum(0, 0); sum = coor1 + coor2; cout << sum << endl; system("pause");}
单目运算符
成员函数
public: coordinate(int x, int y) { m_ix = x; m_iy = y; } coordinate operator + (coordinate coor); coordinate operator++ ();//前置 coordinate operator++(int);//后置private: int m_ix; int m_iy;};coordinate coordinate::operator++(){ m_ix++;//等价预++m_ix 或者 ++this->m_ix m_iy++; return *this;}coordinate coordinate::operator++(int){ coordinate old(*this); m_ix++; m_iy++; return old;}
友元函数
class coordinate{ friend ostream &operator<<(ostream &out, const coordinate &coor); //friend coordinate operator + (coordinate coor1, coordinate coor2);//加上的两行代码 friend coordinate operator++(coordinate& coor1);//友元函数重载前置++ friend coordinate operator++(coordinate& coor1, int);//友元函数重载后置++public: coordinate(int x, int y) { m_ix = x; m_iy = y; } coordinate operator + (coordinate coor); //coordinate operator++ ();//前置 //coordinate operator++(int);//后置private: int m_ix; int m_iy;};coordinate operator++(coordinate& coor1){ coor1.m_ix++; coor1.m_iy++; return coor1;}coordinate operator++(coordinate &coor1, int){ coordinate coora(coor1); coor1.m_iy++; coor1.m_iy++; return coora;}
0 0
- C++-运算符重载
- [C++]重载运算符
- C#:运算符重载
- c++-++运算符重载
- C++:重载运算符
- 运算符重载(C++)
- [c++]运算符重载
- 【C++】运算符重载
- C++--------------------------------------------运算符重载
- C#:运算符重载
- C++:运算符重载
- C++:运算符重载
- C#:运算符重载
- [C++]运算符重载
- 【c++】运算符重载
- C++:运算符重载
- C#:运算符重载
- C++:运算符重载
- mac上忘记mysql密码完美解决方案
- 数据结构之链表(C/C++)
- Linux中more和less命令用法
- 前端面试题:从url到页面展现,这之中发生了什么?
- 剑指offer-47.求1+2+3+...+n
- c++运算符重载
- Netty Failure to transfer io.netty:netty-tcnative:jar:${os.detected.classifier}:2.0.0.Final 问题解决
- 湖北民族学院oj 1883 之 Sequence Number
- as中drawable和mipmap都用右键res,new image asset方法放入
- Angular4中的依赖注入
- 程序员在十年后还会有今天的收入吗?
- Object类
- poj 1936 求一个串 是否为 另一个的自串(可以不连续)
- 百炼4116:拯救行动