Resource management
R.34
Принимайте параметр `shared_ptr<widget>` для выражения разделённого владения
Причина
Это делает явным разделение владения в функции.
Пример (хороший)
class WidgetUser
{
public:
// WidgetUser будет разделять владение widget
explicit WidgetUser(std::shared_ptr<widget> w) noexcept:
m_widget{std::move(w)} {}
// ...
private:
std::shared_ptr<widget> m_widget;
};
Контроль
- (Простой) Предупреждать, если функция принимает
Shared_pointer<T>по lvalue-ссылке и не присваивает ему значение и не вызывает на нёмreset()хотя бы на одном пути выполнения. Предлагать приниматьT*илиT&вместо этого. - (Простой) ((Foundation)) Предупреждать, если функция принимает
Shared_pointer<T>по значению или по константной ссылке и не копирует и не перемещает его в другойShared_pointerхотя бы на одном пути выполнения. Предлагать приниматьT*илиT&вместо этого. - (Простой) ((Foundation)) Предупреждать, если функция принимает
Shared_pointer<T>по rvalue-ссылке. Предлагать принимать его по значению.