Объявление константной переменной

У меня есть функция, возвращающая константную ссылку на объект следующим образом:

const &Foo getFoo() {
return foo;
}

Если у меня есть другая функция следующим образом:

void bar() {
const qwerty = asdf.getFoo();
int x = qwerty.x + 5;
// something here
}

Является ли предшествующее QWERTY необходимым или лучшим методом?

-2

Решение

Ну, во-первых, это ни необходимо, ни лучшая практика — этого недостаточно. Тебе тоже нужен тип. Как только вы заполните это, 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)и нужна причина, чтобы выбрать один или другой вместо этого.

4

Другие решения


По вопросам рекламы [email protected]