【C++】warning: reference to local variable ‘xxx' returned[-Wreturn-local-addr]

错误原因

函数的返回值为函数内部定义变量的引用,但函数在调用完毕后,函数内部定义的变量空间被释放,无法访问,从而造成的错误。

错误示例

Matrix& Matrix::operator+(const Matrix& rhs)
{
    Matrix result;
	//其他操作
    return result;
}

//改正方法一:给返回变量定义加上static限定符,保证在函数调用完后不释放空间
Matrix& Matrix::operator+(const Matrix& rhs)
{
    static Matrix result;
	//其他操作
    return result;
}

//改正方法二:去掉返回值的引用,保证函数外部无法访问返回值的空间,只能得到其内容
Matrix Matrix::operator+(const Matrix& rhs)
{
    static Matrix result;
	//其他操作
    return result;
}

你可能感兴趣的:(c++)