首页 > 解决方案 > 在变量的范围和复制方面,这段代码有什么问题吗?

问题描述

我刚刚做了下面的功能

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 中我返回了局部变量 sum,这可能很糟糕,因为它在函数末尾被删除并返回给调用函数。但似乎这些变量有不同的地址。我弄错了吗,在这种情况下,c++ 会复制变量吗?

我可以修改变量吗?我认为已经制作了一个副本,我可以修改它,这与“to”不同,我通过引用传递以避免不必要的复制并制作 const 以防止编辑。

标签: c++

解决方案


我想这可能是因为在 sumRange 我返回了局部变量 sum 这可能是坏的

这是完全安全的。另一方面,试图返回一个引用或一个指向局部变量的指针将是一个问题。

我可以修改变量吗?我想复制一份,我可以修改这个

好的,可以。确实复制了。


但!

这条线没有做你认为它做的事情:

sum =+ from;

它的意思sum = +from;是,与 相同sum = from;

你可能想要:

sum += from;

推荐阅读