008:超简单的复数类
题面
描述
下面程序的输出是:
3+4i
5+6i
请补足Complex类的成员函数。不能加成员变量。
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
class Complex {
private:
double r,i;
public:
void Print() {
cout << r << "+" << i << "i" << endl;
}
// 在此处补充你的代码
};
int main() {
Complex a;
a = "3+4i"; a.Print();
a = "5+6i"; a.Print();
return 0;
}
思路
这个题有两种思路,一种是将"3+4i"
考虑为t("3+4i")
进行对象和对象之间的赋值运算。
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
class Complex {
private:
double r, i;
public:
void Print() {
cout << r << "+" << i << "i" << endl;
}
Complex() {
}
Complex(const char* str) {
r = str[0] - '0';
i = str[2] - '0';
}
};
int main() {
Complex a;
a = "3+4i"; a.Print();
a = "5+6i"; a.Print();
return 0;
}
第二种重载=
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
class Complex {
private:
double r, i;
public:
void Print() {
cout << r << "+" << i << "i" << endl;
}
Complex() {
}
Complex& operator = (const char* str){
r = str[0] - '0';
i = str[2] - '0';
return *this;
}
};
int main() {
Complex a;
a = "3+4i"; a.Print();
a = "5+6i"; a.Print();
return 0;
}
如果我们将他们两都加上
输出:
显然我们可以发现是执行了=的重载