Resource management
R.35
Принимайте параметр `shared_ptr<widget>&` для выражения того, что функция может переустановить общий указатель
Причина
Это делает явной семантику переустановки в функции.
Примечание
«Переустановка» (reseat) означает «заставить ссылку или умный указатель ссылаться на другой объект».
Пример (хороший)
void ChangeWidget(std::shared_ptr<widget>& w)
{
// Это изменит widget в вызывающем коде
w = std::make_shared<widget>(widget{});
}
Контроль
- (Простой) Предупреждать, если функция принимает
Shared_pointer<T>по lvalue-ссылке и не присваивает ему значение и не вызывает на нёмreset()хотя бы на одном пути выполнения. Предлагать приниматьT*илиT&вместо этого. - (Простой) ((Foundation)) Предупреждать, если функция принимает
Shared_pointer<T>по значению или по константной ссылке и не копирует и не перемещает его в другойShared_pointerхотя бы на одном пути выполнения. Предлагать приниматьT*илиT&вместо этого. - (Простой) ((Foundation)) Предупреждать, если функция принимает
Shared_pointer<T>по rvalue-ссылке. Предлагать принимать его по значению.