题目描述
实现一个Integer类使得main函数得到例子中的输出。
输入
20
输出
10 20
110 120
230 240
主程序 (不能修改)
#include "source.cpp"
#include <iostream>
#include <string>
using namespace std;
int main() {
Integer x = 10;
Integer y; // constructor initializes y to 0
cin >> y;
cout << x << " " << y << endl;
Integer::increase_all(100);
cout << x << " " << y << endl;
Integer::increase_all(y);
cout << x << " " << y << endl;
}
参考答案
以下两份答案,实现方法略有差异。
Yizuodi的答案
#include <iostream>
using namespace std;
class Integer{
public:
int number;
static int add_number;
Integer(int x){
number=x;
}
Integer(){
number=0;
}
static void increase_all(int x){
add_number+=x;
}
static void increase_all(Integer x){
add_number+=x.number+add_number;
}
};
int Integer::add_number=0;
ostream & operator<<( ostream & os,const Integer & t)
{
int tmp=t.number+t.add_number;
os << tmp;
return os;
}
istream & operator>>( istream & is,Integer & t)
{
is>>t.number;
return is;
}
Mitte的答案
#include <iostream>
using namespace std;
class Integer{
public:
static int up;
int num;
Integer(){
this->num=0;
}
Integer(int i){
this->num=i;
}
static void increase_all(int i){
up=i;
return;
}
static void increase_all(Integer i1){
up=i1.num;
return;
}
};
istream & operator >> (istream& in, Integer& i1) {
in >> i1.num;
return in;
}
ostream & operator << (ostream &out,Integer& i1){
i1.num+=Integer::up;
out<<i1.num;
return out;
}
int Integer::up = 0;