【转】int const A::func()和int A::func() const

int const A::func() { return 0; }
int A::func() const { return 0; }

     上面的代码是合法的,其中A::func成员函数[只能在成员函数后面加上const修饰符]是一个重载成员函数,两个函数都返回int类型数据(注意:对于C/C++,返回类型或参数类型中,const int和int被认为是一种类型。但是const int *和int *不是一种类型),这两个重载函数正是基于函数名后的const来重载的。
    int const func();表示该成员函数的隐藏this指针参数是A * const类型的[this只能指向一个const*指针对象(这个是必然的啊),但是该对象的值(*t取出或者赋值)可以改变];而int func() const;表示该重载成员函数的隐藏this指针参数是A const * const类型的[this只能指向一个const*指针对象,而且该对象的值不可以改变].

A * const类型和A const * const类型是不同类型,因此可以重载。

posted @ 2013-09-23 19:27  何解一直犯相同错误?  阅读(717)  评论(0编辑  收藏  举报