我已經創建了一個Calendar類,其中一切似乎都正常工作,但在程序結束之前,調用析構函數時會導致調試斷言失敗!爲什麼析構函數在被調用時會創建一個bug?
這是類:
//constructor
Calendar::Calendar(const int *pday, const int *pmonth, const int *pyear){
day = new int(sizeof(pday));
month = new int(sizeof(pmonth));
year = new int(sizeof(pyear));
day = pday;
month = pmonth;
year = pyear;
}
//copy constructor
Calendar::Calendar(const Calendar &rhs){
day = new int(sizeof(rhs.day));
month = new int(sizeof(rhs.month));
year = new int(sizeof(rhs.year));
day = rhs.day;
month = rhs.month;
year = rhs.year;
}
//operator '=' overload
Calendar& Calendar::operator=(const Calendar &rhs){
delete[] day;
delete[] month;
delete[] year;
day = new int(sizeof(rhs.day));
month = new int(sizeof(rhs.month));
year = new int(sizeof(rhs.year));
day = rhs.day;
month = rhs.month;
year = rhs.year;
return *this;
}
//deconstructor
Calendar::~Calendar(){
delete[] day;
delete[] month;
delete[] year;
}
可能是什麼問題呢?我是不是爲類的變量創建內存?
你爲什麼使用'delete []'?爲什麼你使用指針而不是整數? – BlackDwarf
new [size]也許?不是新的()或簡單地刪除 – Pumkko
爲什麼4/4/4或8/8/8是您的默認日期? – molbdnilo