Возврат константной переменной - это может вызвать проблемы? - PullRequest
0 голосов
/ 10 октября 2018

Я новичок в C ++, не нашел ответа на это, потому что результаты поиска всегда о сигнатуре функции, а не об этом.

В основном, если у меня есть функция:

std::string MyFunction(const int test) const
{
    const std::string str1 = "Hello";
    const std::string str2 = "World";
    return test > 7 ? str1 : str2;
}

Возвращаемое значение: str1 или str2, которые оба const.Может ли это вызвать проблемы у звонящего?

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Тип, который вы возвращаете: std::string, а не const std::string.Вызывающую сторону не должно волновать тип локальных переменных (вызывающая сторона может даже не иметь доступа к определению / телу / реализации функции!).

В общем, типы локальных переменных втело функции не может изменить тип возвращаемого значения самой функции (auto и лямбда-выражения исключены).

0 голосов
/ 10 октября 2018

Возвращаемое значение: str1 или str2, которые оба const.Может ли это вызвать проблемы у звонящего?

Нет, не будет.Возвращенный объект является копией одного из них.

Кроме того, использование const в типе аргумента в большинстве случаев бессмысленно.Изменяете ли вы значение аргумента в функции или нет, это не влияет на вызывающую функцию.Если у вас нет веских оснований оправдывать использование const, я рекомендую использовать более простую форму без const.

std::string MyFunction(int test) const { ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...