// 按照作业中题序,空格序
1)
4
1 // 题目中调用了一次函数,在返回对象的时候从底层栈中将此对象复制构造给主函数中变量后,调用了此对象的析构函数,于是使静态成员被减少一次
2)
// 这道题还是函数调用导致了复制构造函数的调用,在传参和 return 的时候都被调用一次
9
22
5
3)
int n = 0
int& val
4)
// 这里用了atof这样的函数,有人说在poj上无法通过,暂时不理会吧。但是有一份标准答案这个地方处理地很懒,
// 并且答案里出现了一个if(!t),本意是为了当传入的字符串为空的时候生产一个0+0i,实际上是不可能的。所谓
// 传入的字符串为空,便是指调用了 Complex t(""), 这时候t指向的并不是NULL,而是一个开了空间的常指针,
// 正确的用法应该是if(!t[0]),如果不知道我在说什么,那是因为你没试图去找标答
Complex(const char* str)
{
char buf[100];
int m = 0, i = 0;
for(i = 0; str[i] != '+'; i++)
{
buf[m++] = str[i];
}
buf[m] = 0;
r = atof(buf);
m = 0;
for(i = i + 1; str[i] != 'i'; i++)
{
buf[m++] = str[i];
}
buf[m] = 0;
i = atof(buf);
}
5)
Sample(Sample& s)
{
v = s.v + 5;
}
6)
MyString(MyString & str)
{
p = new char[strlen(str) + 1];
strcpy(p, str);
}
void Copy(const char * str)
{
delete p;
p = new char[strlen(str) + 1];
strcpy(p, str);
}
7)
// 此题标准答案有些问题,Base类中缺乏无参的构造函数,但是在Big类中的声明要求调用他,故我加了下面一个东西,
// 但考虑这是命题的疏忽,就注了吧
// Base(){};
Big(int n): v(n), b(n){};
Big(Big& x): v(x.v), b(x.b){};
PKU-静态成员作业-程设hw03
最新推荐文章于 2024-06-27 12:00:00 发布