17.11.2007, 13:16
общий
это ответ
Здравствуйте, Tito!
Как я понял вам надо удалить содержимое объектов х и y до завершения программы! тогда деструтктор вам не полдходит потомучто деструктор вызываеться только в конце тела! вам нужно создать две функции удаления памяти и резервирования!
И вообще у вас очень много ошибок! вызабыли перегрузить оператор =, и много другого!
См приложения! Я переделал вашу програму!
Удачи!
Разбирайте и спрашивайте что не понятно!
Приложение:
#include "iostream.h"//using namespace std;const int max_size = 100; /* char longsumch(char a, char b) { return (int) a + (int) b - \‘0\‘; }*/ class Long { char *a; public: Long() { a = new char[max_size]; strcpy(a, ""); } Long(char *s) { a = new char[max_size]; strcpy(a,s); } Long(Long &ob) { a = new char[max_size]; strcpy(a,ob.a); // возможно нужно исправить конструктор копии } ~Long() { if(a!=NULL) delete []a; cout << "delete []a\n"; } char *get() { return a; } Long operator+ (Long op2); Long operator=(Long op2);//нужно перегрузить оператор равно void FreeMem(void){delete []a; a=NULL;}//освобождения памяти void CreateMem(int Size) {a=new char[Size];}//резервирования памяти }; Long Long::operator + (Long op2) { Long temp; int iop =atoi(op2.get()); int i=atoi(a); itoa((i+iop),temp.a,10); // "сумма" двух чисел return temp; } Long Long::operator =(Long op2) { strcpy(a,op2.get()); return *this; }int main(){ Long x("4"), y("3"), z; z = x + y; // вот здесь после возврата значения (x+y) // память занимаемая (x+y) должна очиститься x.FreeMem(); y.FreeMem(); cout << z.get(); //getch(); cin.get();return 0;}