Как корректно реализовывать функции-геттеры? Я имею ввиду возвращаемое значение. Так:
std::shared_ptr<const number_t> number () const noexcept
{
return std::make_shared<const number_t> (this->m_number);
}
Или так (в стиле vector::at):
const auto & number () const noexcept
{
return this->m_number;
}
m_number
- поле пользовательского типа, а не стандартного.
Какой вариант считается хорошим стилем сейчас / безопаснее / более удобен и т.п.?
Умный указатель нужен только в том случае, если у нас есть переменная, лежащая в куче, и надо безопасно управлять её временем жизни (то есть с одной стороны не допустить утечки, а с другой — не уничтожить эту переменную раньше времени; именно отсюда и растут ноги понятия «владение» — переменная будет уничтожена только при уничтожении её текущего владельца).
В вашем же случае значение не является какой-то уникальной сущностью, а потому ничего страшного в создании дубликата не будет — мы не различаем между собой оригинальное число и его копию. Поэтому спокойно возвращайте величину по значению, без константных ссылок и указателей.
Я вам больше скажу — компилятор влёгкую оптимизирует возврат значения. Если это примитивный тип, то он просто записывается в регистр процессора; если нет — применяется RVO (оптимизация возвращаемого значения, частный случай copy elision, о котором я писал в одном из своих ответов).
Возврат по указателю (неважно, обычному или умному) нужен только в том случае, когда мы работаем с сущностями. К примеру, копия графического элемента управления (GUI control) или объекта в игровом мире — это уже новые объекты, не имеющие отношения к своим оригиналам.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Пишу приложение, в котором необходимо, что бы картинка фона графической сцены постепенно менялась, скажем, с таймеромВ документации прочитал,...
Привет, делаю сайт визитку, затык на банальном вопросе не могу вставить изображение на фон только одной (главной) indexhtml страницы
Интересует какими лучше способами нарисовать (анимировать само рисование спирали) спираль Ферма на сайте? (Чтобы пользователь видел как...