一些简单的操作符重载
2016-03-22 15:00
344 查看
<pre name="code" class="cpp">#include <iostream> using namespace std; class MyInt { int nVal; public: MyInt(int n) { nVal = n; } int ReturnVal() { return nVal; } // 在此处补充你的代码 MyInt & operator -(int n) { nVal -= n; return *this; } }; int main () { MyInt objInt(10); objInt-2-1-3; cout << objInt.ReturnVal(); cout <<","; objInt-2-1; cout << objInt.ReturnVal(); return 0; }
//有点挤。
#include <iostream> #include <cstring> #include <cstdlib> #include<sstream> using namespace std; class Complex { private: double r,i; public: Complex(double r, double i) { this->r = r; this->i = i;} //写了有参的构造函数就得写无参的。 Complex(){ this->r = 0; this->i = 0;} double getReal() { return r;} double getImaginary(){return i;} void setReal(double r){this->r=r;} void setImaginary(double i){this->i = i;} //用sstream有点作弊的感觉,有什么其他方法? void operator = (const char * c){stringstream a;int sr,si;char x,y;a<<c;a>>sr>>x>>si>>y;r=sr;i=si;if(x=='-')i=-i;} //完成c=a+b; Complex operator+ (Complex & b){return Complex(r+b.r,i+b.i);} //减法也差不多 Complex operator- (Complex & b){return Complex(r-b.r,i-b.i);} //乘法 c=a*b; Complex operator* (Complex & b){return Complex(r * b.r - i * b.i, r * b.i + i * b.r);} //除法 略。 //判断的 bool operator== (Complex & b){if(r == b.r || i == b.i)return true;else return false;} bool operator!= (Complex & b){if((*this)== b) return false;else return true;} //复数比较大小用绝对值 };//cout<<a;来代替print,把他设为全局函数 ,因为otream已经写好了,不能再添加成员函数 /*void Print() { cout << r << "+" << i << "i" << endl; }*/ ostream & operator<< (ostream & o, Complex & c) {o<< c.getReal() ;double i=c.getImaginary();if(i>0) o << "+" << i << "i" ;if(i<0) o <<i<<"i";return o;} //现在来完成cin>>b; 从键盘输入 5+6i istream & operator>>(istream & in, Complex & c) {stringstream a;string b;in>>b;a<<b;double r,i;char x, y;a>>r>>x>>i>>y;c.setReal(r);if(x=='-') c.setImaginary(-i);else c.setImaginary(i);} //还是用了sstream,明显不是最佳方法。
相关文章推荐
- 2016蓝桥杯C/C++省赛B组第6题 方格填数 DFS
- openwrt之wifi驱动显示连接设备MAC
- Objective-C里调用Swift
- React Native 红屏之Could not connect to development server.
- Java多线程系列--“JUC锁”09之 CountDownLatch原理和示例
- Powershell之MOF后门
- js中cookie的学习与使用
- 设配器模式不止是补救,有时更像是一个创造者
- 触摸java常量池
- CodeBlocks不能打断点问题
- Halcon算子--区域特征
- LeetCode--223. Rectangle Area
- jws,axis2,Xfire以及cxf对比
- android Animation 动画
- VMware Workstation上安装CentOS7和VMTools实现文件共享的经验总结
- Python debug——TypeError: unhashable type(list/set/dict)
- hibernate3和hibernate4 query.setParameter(i,list.get(i))
- 怎样在一个数据库中访问另一个数据库里面的表
- Mac系统硬盘复制之后启动慢的问题
- 【小镇的技术天梯】C语言,冒泡、快速、希尔、选择排序