Правила программирования на Си и Си++

         

122. Не возвращайте ссылки (или указатели) на локальные переменные


Эта проблема проявляется и в Си, где вы не можете вернуть указатель на локальную переменную. Не возвращайте ссылку на объект, который не существует после этого возврата. Следующий код не работает:

some_class &f()

{

   some_class x;

   // ...

   return x;

}

Действительной проблемой здесь является синтаксис Си++. Оператор return может располагаться на отдалении от определения возвращаемой величины. Единственный способ узнать, что на самом деле делает return x, —

это взглянуть на заголовок функции и посмотреть, возвращает она ссылку,

или нет.




Содержание  Назад  Вперед