Functions
F.26
Используйте `unique_ptr<T>` для передачи владения там, где нужен указатель
Причина
Использование unique_ptr — самый дешёвый способ безопасно передать указатель.
Смотрите также: C.50 о том, когда возвращать shared_ptr из фабрики.
Пример
unique_ptr<Shape> get_shape(istream& is) // собрать фигуру из входного потока
{
auto kind = read_header(is); // прочитать заголовок и определить следующую фигуру на входе
switch (kind) {
case kCircle:
return make_unique<Circle>(is);
case kTriangle:
return make_unique<Triangle>(is);
// ...
}
}
Примечание
Нужно передавать указатель, а не объект, если передаваемое является объектом из иерархии классов, который будет использоваться через интерфейс (базовый класс).
Контроль
(Простой) Предупреждать, если функция возвращает локально выделенный сырой указатель. Предложить использовать unique_ptr или shared_ptr.