C++学习笔记之this指针

Table of content:

  1. this指针怎么记 ?
  2. 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指向对象的值。

猜你喜欢

转载自blog.csdn.net/wanzew/article/details/81585740