Я только что выполнил функцию ниже

static int sumRange(int from, const int& to);

int Utility::sumRange(int from, const int& to)
{
    int sum = 0;
    while (from < to)
    {
    sum =+ from;
    ++from;
    }
    return sum;
}
int sum = Utility::sumRange(5,10);

Некоторые вопросы:

Я подумал, что, возможно, из-за того, что в sumRange я вернул сумму локальной переменной, это могло быть плохо, потому что оно было удалено в конце функции и возвращено вызывающей функции. Но похоже, что у этих переменных разные адреса. Я ошибаюсь, в этом случае c ++ делает копию переменной?

Это нормально, что я изменяю переменную из? Я полагаю, что копия сделана, и я могу ее изменить, в отличие от «to», где я передаю ссылку, чтобы избежать ненужной копии, и создаю const для предотвращения редактирования.

c++
-1
user11245477 27 Мар 2019 в 02:18

1 ответ

Лучший ответ

Я подумал, что, возможно, из-за того, что в sumRange я вернул сумму локальной переменной, это может быть плохо

Это совершенно безопасно. С другой стороны, попытка вернуть ссылку или указатель на локальную переменную будет проблемой.

Это нормально, что я изменяю переменную из? Я полагаю, что копия сделана, и я могу изменить это

Да, все в порядке. Копия действительно сделана.


Но!

Эта строка не делает того, что вы думаете:

sum =+ from;

Это означает sum = +from;, что аналогично sum = from;.

Вы наверняка захотите:

sum += from;
2
HolyBlackCat 26 Мар 2019 в 23:25