[转载]this指针是const指针吗?

是的。
这问题背后很复杂,这里简单说一下。假设Point类有getX这样一个非static函数
double Point::getX();
实际上,成员函数在编译以后也要变成非成员函数,这也正是this指针的作用,用来接受调用对象的地址。也就是说,编译以后形式如下,当然函数名会变化,这里仅仅是想说明道理:
double getX(Point *const this);
因为在某次调用整个过程this指向都不允许改变(原因很简单,如果改变的话就不是这个对象调用的了),所以this就应该声明成const指针。

另外,如果是常函数也就是下面的定义:
double Point::getX()const;
编译后会变成:
double getX(const Point *const this);
因为不允许改变this指向内容的所以需要const Point。
posted @ 2013-11-19 10:52  fbwang2011  阅读(321)  评论(0编辑  收藏  举报