出於某種原因,當我使用的析構函數我更新類,調試斷言失敗消息顯示...調試斷言失敗的消息
這裏是我的更新類略去了一些代碼。放置在頭文件中:
using namespace std;
class Update
{
private:
int day, month, year;
static const int FIELD_SIZE = 3, DEFAULT_DAY = 12, DEFAULT_MONTH = 12,
DEFAULT_YEAR = 1999, DAYS_IN_MONTH = 30, MONTHS_IN_YEAR = 12, DAYS_IN_YEAR = 365;
int * date;
public:
static int dateUpdate;
Update(int D, int M, int Y)
{
day = D;
if (day < 1 || day > DAYS_IN_MONTH)
day = DEFAULT_DAY;
month = M;
if (month < 1 || month > MONTHS_IN_YEAR)
month = DEFAULT_MONTH;
year = Y;
if (year < 1)
year = DEFAULT_YEAR;
date = new int [FIELD_SIZE];
date[0] = day, date[1] = month, date[2] = year;
dateUpdate++;
}
~Update()
{
delete [] date;
dateUpdate--;
}
};
,這裏是一個CPP文件我的測試類:
#include <iostream>
#include "Update.h"
int Update::dateUpdate = 0;
int main()
{
Update u1(29, 12, 2000);
u1.Update::~Update();
return 0;
}
我已經通過涉及調試斷言失敗等問題,讀,但東西告訴我一個調試斷言失敗以不同的方式,可能會發生。結果,我很少知道爲什麼錯誤信息顯示在我的代碼中......現在我懷疑我的析構函數有什麼問題嗎?非常感謝你的幫助!
爲什麼你明確地調用析構函數? – olevegard 2013-05-05 19:24:40
爲什麼你使用'new []'和'delete []'而不是一個容器爲你做了繁重的工作(你已經做了錯誤的例子)? – chris 2013-05-05 19:25:44
難道不是這樣做的嗎?我當時正在看msdn.microsoft.com/en-us/library/35xa3368%28v=vs.80%29.aspx ... – user1800967 2013-05-05 19:25:59