返回对本地临时对象c ++的引用

时间:2017-10-22 20:22:30

标签: c++ operator-overloading

重载关系运算符== for class stackThat返回trueiftwo相同类型的堆栈是相同的;否则就是假的。

我的代码:

template <class Type>
const stackType<Type>& stackType<Type>::operator ==
(const stackType<Type>& otherStack)
{
    if (this->stackTop != otherStack.stackTop)
        return false;
    for (int i = 0; i < stackTop; i++)
        if (this->list[i] != otherStack.list[i])
            return false;
    return true;
} //end operator==

我收到了对本地临时对象警告的返回引用,据我所知,一旦函数范围结束,它就会被销毁。任何人都可以指出我正确的方向来解决这个警告吗?

1 个答案:

答案 0 :(得分:2)

您宣布运营商返回const stackType<Type>&,然后您返回truefalse。编译器尝试将truefalse转换为const stackType<Type>&,然后将其返回。这可能不是你想要的 - 而是声明它返回bool

即使转换有效,引用也是一个局部变量,它给出了UB。