c++重载>>与<<
2016-07-22 11:33
393 查看
输入和输出运算符只能用友元函数重载。
友元函数:指某些虽然不是类成员却能够访问类的所有成员的函数。
友元函数:指某些虽然不是类成员却能够访问类的所有成员的函数。
#include <iostream> using namespace std; class complex{ private: double re, im; public: complex(double re, double im){ this->re = re; this->im = im; } complex(){ this->re = 0; this->im = 0; } complex operator !(); complex operator +(const complex& obj); friend ostream& operator << (ostream& os, complex c); friend istream& operator >> (istream& is, complex& c); complex& operator++(){ this->re += 1; this->im += 1; } const complex operator++(int){ complex old; old.re = this->re; old.im = this->im; ++(*this); return old; } void operator+=(const complex temp){ this->re += temp.re; this->im += temp.im; } }; complex complex::operator +(const complex& obj){ complex temp; temp.re = obj.re + this->re; temp.im = obj.im + this->im; return temp; } complex complex::operator !(){ complex temp; temp.re = -this->re; temp.im = -this->im; return temp; } ostream& operator<<(ostream& os, complex c){ os<<c.re; if(c.im>0) os<<"+"<<c.im<<"i"<<endl; else os<<c.im<<"i"<<endl; return os; } istream& operator >> (istream& is, complex& c){ is>>c.re>>c.im; return is; } int main(){ complex obj(1,2),obj1(3,-4); obj += obj1; cout<<obj; cout<<obj1; cin >> obj; cout << obj++ <<std::endl; cout << obj; return 0; }
相关文章推荐
- C++虚函数的工程应用2
- NYOJ 76超级台阶问题
- C++识别中文标点
- 【高精度算法】A-B 要求:除数与被减数均为正整数
- NYOJ236心急的c小加
- 【高精度算法】A/B 高精度除以低精度 保留小数
- C语言单向链表的建立
- STL中迭代器 (Iterator) 的简单实现
- 栈实现一个简单的运算器
- error C2065:未声明的标识符错误
- 【高精度算法】A+B
- c++高精模板(+ ,-,*,/)
- 【高精度算法】A+B 加强版
- 【高精度算法】A-B(答案可负)
- C++ pure virtual function call
- C++ 局部静态变量,全局变量,全局静态变量,局部变量的区别和联系
- C语言 随机函数 种子
- C语言培训_010
- 李洪强漫谈iOS开发[C语言-014]-变量
- C++中嵌入python程序——命令行模式