Image

Imageborisovs wrote in Imageru_cpp

Category:

Оптимизация возвращаемого значения

Господа, прочитал у Липмана о том что есть такая оптимизация:

Компилятор в состоянии распознать, что возвращается объект класса и выполнить трансформацию его значения и без явного расширения языка. Если дана функция общего вида:

classType
functionName( paramList )
{
   classType namedResult;
   // выполнить какие-то действия ...
   return namedResult;
}

то компилятор самостоятельно трансформирует как саму функцию, так и все обращения к ней:
void
functionName( classType &namedResult, paramList )
{
   // вычислить результат и разместить его по адресу namedResult
}

что позволяет уйти от необходимости возвращать значение объекта и вызывать копирующий конструктор. Чтобы такая оптимизация была применена, в каждой точке возврата из функции должен возвращаться один и тот же именованный объект класса.

Т.е. получается,  можно возвращать значение по значению и компилятор сам переводит его в ссылку?