Известная вещь, что код
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);
}
Что конечно эффективнее. Вот только меня смущает, где читал, забыл, и проверить уже не могу. Да и фраза "современные компиляторы" настораживает — какая-то она неопределённая.
Так вот, вопрос — правда ли, нет, и вообще, как возвращать сложные объекты без утечек памяти.