先解释const 的记忆问题:
比如:
type const * p;
* p 是表示对象, const 修饰 *p , 就表示常对象。即 *p 对象不可改变。 所以 p 不是 常指针,是指向常量的指针。
相对于:const type * const * p; 的写法,个人推荐前一种。
而:
type * const p;
const 修饰 p, 所以 p 是常量,而* const p 即代表指针常量. p 是常指针。
所以
int * & func(C &oC)
{
return oC.m_p;
}
表示返回指针的引用
但没有:
int & * func(C &oC)
{
return oC.m_p;
}
编译器会把 int & * 中的 & 看作取地址符号。
如果要对 int 型变量进行应用,为没必要这样
可以这样写:
int & func(C &oC)
{
return *oC.m_p;
}
同样记忆:
常引用对象: type const & Ref ;
还要注意const 修饰函数只能是 类成员函数,而不能是全局函数