社区讨论
萌新问一个关于class 类的问题
学术版参与者 2已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @lo3brk2z
- 此快照首次捕获于
- 2023/10/24 04:03 2 年前
- 此快照最后确认于
- 2023/10/24 04:03 2 年前
我在尝试用class来实现高精度加法,在没有写析构函数
CPP~Number() 时可以输出正确答案,在写了析构函数后就会随机输出,代码以12+1=13作为样例,求大佬的帮助/kk#include"iostream"
#include"cstring"
#include"cstdio"
#include"cmath"
using namespace std;
#define ll long long
char zero[]="00000000000000000000";
class Number
{
public:
int len;
int *str;
Number(char *s)
{
len=strlen(s);
str=new int[len];
for(int i=0;i<len;i++) str[i]=s[len-i-1]-'0';
}
friend Number operator +(const Number &n,const Number &m)
{
Number t(zero);
int lenn=max(n.len,m.len);
for(int i=0;i<lenn;i++)
{
if(i<n.len) t.str[i]+=n.str[i];
if(i<m.len) t.str[i]+=m.str[i];
}
t.len=lenn;
for(int i=0;i<lenn;i++)
{
t.str[i+1]+=t.str[i]/10;
t.str[i]%=10;
}
if(t.str[lenn]) t.len++;
return t;
}
friend void print(const Number &number)
{
for(int i=0;i<number.len;i++) cout<<number.str[number.len-i-1];
puts("");
}
//下面这里注释掉就会输出
//求助怎么样写才能保证可以析构释放空间并且保证正确性
~Number(){delete[] str,str=NULL;}
};
int main()
{
Number n1("12"),n2("1");
Number d("0");
d=n1+n2;
print(d);
return 0;
}
回复
共 4 条回复,欢迎继续交流。
正在加载回复...