在函数参数中通过引用返回变量?

时间:2016-03-12 21:42:14

标签: c++ memory

假设我有一个任意对象String。我想从函数中传回多个String。我可以这样做吗?

bool f(String &s1, String &s2) {
    if (worked) {
        s1 = String("abc");
        s2 = String("def");
        return true;
    } else {
        return false;
    }
}

这是否会导致内存损坏,因为我正在返回本地创建的对象?

2 个答案:

答案 0 :(得分:4)

不,您没有返回本地创建的对象。显示的代码返回bool值。

您正在做的是将对象分配给传递的引用。这也没有任何内在错误。

答案 1 :(得分:2)

不,这完全有效。将为指定的类型调用赋值运算符。 (String::operator=(const String &other)或类似的)