const 问题
我写了一个类
class CTest1
{
public:
CTest1(){};
~CTest1(){};
CTest1( const CTest1& Src );
CTest1& operator=(const CTest1& Src );
//???
const CArray<int, int>& GetArray()const{return m_aArray;};
private:
CArray<int, int> m_aArray;
};
在cpp中的实现:
CTest1& CTest1::operator=(const CTest1& Src )
{
if( this == &Src ) return *this;
m_aArray.Copy( Src.GetArray() );
return *this;
}
可以编译通过,当在标记处的函数形式是:
const CArray<int, int>& GetArray(){return m_aArray;};
或
CArray<int, int>& GetArray()const{return m_aArray;};
或
CArray<int, int>& GetArray(){return m_aArray;};
的三中情况均不能通过编译,提示
error C2440: 'return' : cannot convert from 'const class CArray<int,int>'
to 'class CArray<int,int> &' Conversion loses qualifiers
定义成最上面的两个const的形式后才编译通过,但我不能理解这是什么原因和
这样定义的意思。请多多指教!
顺便问一句,为什么这个问题我最高只能给34分?