C++类体系中this指针不能改变指向吗?

2024-11-29 15:41:35
推荐回答(4个)
回答1:

有点意思,举个例子:
int i;
如上,随便定义一个变量,现在,你能改变变量i的地址么?原则上,从高级语言的角度来说,改变i的地址是不可能的,因为i的地址是编译器设定的。同样,如果i是某个类的对象,一样不能改变i的地址,而this指针就是对象地址的别名,因此通常无法改变。我说“通常”是指在C++语言这个层面上是无法改变的,除非你对C++编译器编译完的目标代码进行修改。另外,如果你想改变this的指向,也不需要直接修改this,而只需要将this加上某个偏移值就行了,比如(this+12)->funname();但是要考虑到指针的安全性问题。希望回答对你有帮助。

回答2:

不可以,this指针是系统自动生成的,指向对象,而且只能在成员函数当中使用,生命周期也与成员函数相同,希望我的回答对你有所帮助

回答3:

在c++中this是指向当前创建的对象的指针常量。

如果当前创建的是子类的对象,则无论在子类特有的方法还是从父类继承的方法中,this都是指向的子类对象。

因为this是指针常量,所以在方法中不能修改this,即不能为this赋值。

同时,在常成员方法中,this还是只读指针,这意味着不能通过this修改当前对象的数据成员(mutable成员可以修改),也不能调用非常量成员方法。

回答4:

系统自己定义的指针