c++中this指针问题
来源:百度知道 编辑:UC知道 时间:2024/08/22 07:18:14
那this指针能不能更改?
this 就是当前对象,只能在类的成员函数中使用。
比如说有一个 A 类,类A中有一个成员函数 fun(),建立一个对象 a,执行 a.fun();这时this指针就指向a,在函数fun中可以使用*this代替a,就这样,一般不会用到this指针,只有在特殊场合,比如说编写复制赋值函数时可能会用到。
this 当然是不能改的拉,不过可以修改this指向的对象的内容
this关键字只能在类的构造函数、类的方法和类的实例中使用,这的含义是:
1、 在类的构造函数中出现的this表示对正在构造的对象本身的引用。
2、 在类的方法中出现的this表示对调用方法的对象的引用。
3、 在结构的构造函数中出现的this表示对正在构造的结构的引用。
4、 在结构的方法中出现的this表示对调用该方法的结构的引用。
先要理解class的意思。class应该理解为一种类型,象int,char一样,是用户自定义的类型。(虽然比int char这样build-in类型复杂的多,但首先要理解它们一样是类型)。用这个类型可以来声明一个变量,比如int x, myclass my等等。这样就像变量x具有int类型一样,变量my具有myclass类型。
理解了这个,就好解释this了,my里的this 就是指向my的指针。如果还有一个变量myclass mz,mz的this就是指向mz的指针。 这样就很容易理解this 的类型应该是myclass *,而对其的解引用*this就应该是一个myclass类型的变量。
通常在class定义时要用到类型变量自身时,因为这时候还不知道变量名(为了通用也不可能固定实际的变量名),就用this这样的指针来使用变量自身。
1. this指针的用处:
一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问