Это зависит от типа возвращаемого товара. Если вы возвращаете по значению, создается новая копия переменной для возврата вызывающей стороне. В этом случае вам не нужно беспокоиться о времени жизни объекта, но вам, возможно, придется беспокоиться о стоимости копирования объектов (но, пожалуйста, не преждевременно оптимизируйте - правильность гораздо важнее):
std::string someFunc( std::string& const s)
{
return s + "copy";
}
Если функция возвращает ссылку, вам нужно быть осторожным с тем, что вы возвращаете, потому что срок ее службы должен превышать срок действия функции, и вызывающая сторона не обязательно сможет delete
это сделать, если вы используя new
для создания объекта:
std::string& someFunc2( std::string const& s)
{
return s + "reference to a copy"; // this is bad - the temp object created will
// be destroyed after the expression the
// function call is in finishes.
// Some, but not all, compilers will warn
// about this.
}
Конечно, возвращаемые указатели будут иметь аналогичные соображения времени жизни.