У меня есть функция, возвращающая константную ссылку на объект следующим образом:
const &Foo getFoo() {
return foo;
}
Если у меня есть другая функция следующим образом:
void bar() {
const qwerty = asdf.getFoo();
int x = qwerty.x + 5;
// something here
}
Является ли предшествующее QWERTY необходимым или лучшим методом?
Ну, во-первых, это ни необходимо, ни лучшая практика — этого недостаточно. Тебе тоже нужен тип. Как только вы заполните это, const
по-прежнему не требуется, если вы не попытаетесьconst
ссылка. У нас есть три варианта, которые можно скомпилировать:
Foo qwerty = asdf.getFoo(); // (A)
const Foo qwerty = asdf.getFoo(); // (B)
const Foo& qwerty = asdf.getFoo(); // (C)
При условии getFoo()
возвращает ссылку на const
, наиболее эффективным было бы принять это как ссылку на const
Кроме того, это позволяет избежать копирования. Если только вы хочу копия — в этом случае сделать (A)
или же (B)
в зависимости от того, хотите ли вы модифицированную копию или нет. Если не Foo
не подлежит копированию, в этом случае (C)
В любом случае, это ваш единственный вариант.
В конечном счете, это зависит от того, что вы хотите сделать с qwerty
, Я бы по умолчанию (C)
и нужна причина, чтобы выбрать один или другой вместо этого.