书上说,每一个非静态成员函数都有一个隐含的this指如
void Myclass::SetValue(Myclass *const this, int i){x=i;}
请问每个函数里面的隐含this指针是常量指针吗?如果不是常量指针,书上却说在程序中不能修改this指针,但是书上确举出一个用this指针复制同类之间的列子:
void Point::Copy(Point &p) //在外部定义一个类函数,参数为传送一个同类的别名给函数
{if(this==&p)return; *this=p;} //很明显是复制p的地址给this指针;
如果this指针是常量,应该不能改啊!如果不是常量书上确说在程序中不能修改this指针?这是怎么回事啊?
>> 本文固定链接: http://www.vcgood.com/archives/3151
>> 转载请注明: wxjwxjwkjl 2009年04月14日 于 C语言帝国 发表
这么久都没人解答??算了吧!还是我自己解答一下吧!
每个动态的对象里面都由编译器生成一个常量指针this,这个指针指向对象本身.至于我后面举的那个列子,是我看错了!(*this=p;)的含义不是传递地址,而是把对象p的值赋值给对象this所指向的对象,他们之间的赋值是由自己定义的拷贝函数或着是由系统定义的拷贝函数来实现的!但是注意p和*this是同类的!