【发布时间】:2012-07-14 08:05:36
【问题描述】:
我的构造函数可以很好地创建一个副本 - 但是当一个方法将 IntegerNumber 作为参数时,它会停止工作。
我的构造函数:
IntegerNumber::IntegerNumber(const IntegerNumber &integerInput){
//Creates a copy of an Integer Number
//Set len and isNegative
len = integerInput.len;
isNegative = integerInput.isNegative;
//Fill integer with IntegerInput
integer = new char[len+1];
for(int i = 0; i <= len; i++)
integer[i]=integerInput.integer[i];
}
我的析构函数:
IntegerNumber::~IntegerNumber(){
//Destructs IntegerNumber
delete [] integer;
delete &len;
delete &isNegative;
}
我的班级的数据成员:
private:
char *integer;
int len;
bool isNegative;
请尝试帮助我找出我的构造函数/析构函数可能出现的问题,导致程序停止但不会崩溃或中断?
【问题讨论】:
-
delete &len看起来非常可疑。你能显示你的类定义吗? -
在使用
new的地方使用delete([]“版本”相同) -
@CharlesBailey -
len是int -
我很好奇,“停止工作”是什么意思,因为它不会崩溃或中断:?
-
经验法则:每个
new对应一个delete,每个new[]对应一个delete[]。你的deletes 比news 多。
标签: c++ oop class destructor copy-constructor