Функция возвращает динамически созданный объект
От: Silverblade  
Дата: 27.05.10 19:45
Оценка:
Известная вещь, что код

complex_object function ineffective
{
complex_object toreturn;

...
toreturn=...
...

return (toreturn);
}

для сложных объектов неэффективен — поскольку complex_object создаётся минимум два раза, да ещё один раз происходит присвоение.

Дык вот, как этого избежать, без утечек памяти?

Где-то читал (давно и неправда), что современные компиляторы умеют без утечек памяти обрабатывать следующий код:

complex_object& function ineffective
{
complex_object& toreturn=*(new complex_object);

...
toreturn.member1=...
toreturn.member2=...
...

return (toreturn);
}


Что конечно эффективнее. Вот только меня смущает, где читал, забыл, и проверить уже не могу. Да и фраза "современные компиляторы" настораживает — какая-то она неопределённая.

Так вот, вопрос — правда ли, нет, и вообще, как возвращать сложные объекты без утечек памяти.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.