类中const函数的返回值问题

我写了一个matrix类,其中定义了一个二维指针int **p用来表示这个矩阵,现在我需要些一个下标操作符的重载,但是他会报错。
const int *&matrix::operator const
{
return p[n];
}
这个函数返回一个一维指针引用。但是我不知道错在哪儿了。
但是如果把返回引用改成返回一维指针本身,也就是如下所示,就没问题了。为什么呢??哪个大神来解释下。
const int *matrix::operator const
{
return p[n];
}

const int *&matrix::operator const{} //返回的是指针类型的引用
const int *matrix::operator const{} //返回的是指针类型,两者是不同类型的。

引用返回的也是一个隐藏的指针, 把平p[n] 改成p试试