Table of content:
- this指针怎么记 ?
- const修饰成员函数到底修饰的是谁?
-
this指针助记:
this相当于成员函数的一个隐含形参,不需要定义可以直接使用(编译器会自动将对象本身的地址作为一个隐含参数传递给成员函数,也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问均通过this进行)
对象调用成员函数,哪个对象调用成员函数,成员函数的this指针就指向
this的目的总是指向这个对象,所以this是一个常量指针,我们不允许改变this中保存的地址
class Array{
public:
//this 指针是指向自身数据的指针
Array(int _len){ len = _len; }
int getLen(){ return len; }
void setLen(int _len){
len = _len;
}
/* 对各成员的访问均通过this进行
Array(int _len){ this->len = _len; }
int getLen(){ return this->len; }
void setLen(int _len){
this->len = _len;
}*/
private:
int len;
};
Array arr1(0);
Array arr2(0);
//当对象arr1调用成员函数getLen()时
//代码执行到getLen()中时,this指针就指向arr1
//this <<==>> &arr1
arr1.getLen();
//当对象arr2调用成员函数getLen()时
//代码执行到getLen()中时,this指针就指向arr2
//this <<==>> &arr2
arr2.getLen();
每次调用成员函数时都需要传入this指针
当对象arr1调用成员函数getLen()时,会把&arr1 传递给this指针,
所以调用getLen()时this指针就指向了arr1,同理arr2调用getLen()时也会把&arr2传递给this指针。
-
const修饰成员函数到底修饰的谁
类的成员函数可通过const修饰,请问const修饰的是谁?
每个成员函数都有一个默认的、隐含的参数(就是this指针)
当const修饰成员函数时,const其实修饰的是this指针,不能通过this指针来改变this指向对象的值。