Представьте себе такую ситуацию, что у меня есть такая функция:
Object f()
{
Object obj;
return obj;
}
Где sizeof(Object)
- большое значение.
И затем я вызываю эту функцию:
Object object = f();
Правильно ли я понимаю, что первый объект будет создан в стеке (в функции), а затем будет скопирован в переменную объекта?
Если это так, разумно ли создать объект в функции в куче и вернуть указатель на него вместо копии?
Но я имею в виду, что объект должен быть создан в функции f()
- не передан указателем или ссылкой на эту функцию и не инициализирован.
ИЗМЕНИТЬ
Я не имею в виду, что f - очень простая функция. Он может иметь очень сложную процедуру инициализации объекта в зависимости от некоторого контекста. Будет ли компилятор также оптимизировать его?