Форум за въпроси

Въпрос за домашното от лекции - задача 2.

Въпрос за домашното от лекции - задача 2.

от Ивайло Михайлов -
Number of replies: 4

В условието пише:


"Втора част:  Управление на динамичната памет (3 т.)


За така изградената йерархия да се дефинират необходимите специални методи (конструктори, деструктори, оператор за присвояване) така, че динамичната памет да се управлява коректно."

Имам си виртуален деструктор, ще се наложи да използвам метода clone() const , обаче в предната част на задачата не съм използвал заделяне на динамична памет, за да реализирам класовете, това проблем ли е?

In reply to Ивайло Михайлов

Re: Въпрос за домашното от лекции - задача 2.

от Трифон Трифонов -
Ами ако искаш да решиш втора част коректно, трябва да използваш динамична памет. Ако не използваш, тогава примерът, който е даден във втора част, няма да работи коректно.
In reply to Трифон Трифонов

Re: Въпрос за домашното от лекции - задача 2.

от Ивайло Михайлов -
Ако става въпрос за това:

"Constant c1 (1);

Constant* c2 = new Constant (2);

BinaryOperation f1 (‘+’, &c1, c2);

BinaryOperation f2 = f1;    // копиране

f2 = f1;         // присвояване

delete c2;"


Пробвах го и работи нормално.
In reply to Ивайло Михайлов

Re: Въпрос за домашното от лекции - задача 2.

от Трифон Трифонов -
Ако наистина не правиш копиране в динамична памет, то след последния ред f1 и f2 ще работят с памет, която е освободена. Поведението на различните компилатори е различно, понякога може да не се прояви проблемът, но това не значи че го няма.