题目
下面程序的输出是:
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
5+6i
答案
Complex(){
}
Complex(const char a[])
{
r = int(a[0]) - '0';
i = int(a[2]) - '0';
}
解答
很显然,我们需要一个空的构造函数。
a = “3+4i”,这左右两边类型不符,所以我们需要有类型转换构造函数。
Complex(const char a[])
{
r = int(a[0]) - '0';
i = int(a[2]) - '0';
}
我们可以看到,这个函数的参数是一个字符串数组,这里使用了强制类型转换,a[]是字符3,但它的char类型并不是3,二十根据ASCLL码来的。但是后面减去一个‘0’的话,就一定会等于3.
通过类型转换构造函数,将r和i转为了对应的数字。