에 실패했습니다. 헤더 파일에 배치 :디버그 주장은 내 업데이트 클래스의 소멸자를 사용하는 경우, 디버그 주장이 ... 메시지가 표시되지 <p></p> 여기 간결함을 위해 생략 일부 코드 내 업데이트 클래스, 어떤 이유로 메시지
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
무거운 짐을지는 용기 대신에'new []'와'delete []'를 사용하는 이유는 무엇입니까? – chris
그게 끝나지 않았나요? 나는 당시 msdn.microsoft.com/en-us/library/35xa3368%28v=vs.80%29.aspx를보고있었습니다 ... – user1800967