this 指针(C++学习笔记 22)

C++中的this指针是一个隐式传递的指针,用于指向调用成员函数的对象。每个对象在创建时,this指针会被初始化为指向该对象的地址。成员函数通过this指针访问和操作相应对象的数据成员,使得不同对象能调用相同的函数代码但操作各自的成员。在调用成员函数时,this指针作为隐含参数传递,确保了正确引用对象的数据成员。
  • 当定义了一个类的若干对象后,系统会为每一个对象分配存储空间。

  • 如果一个类包含了数据成员和成员函数,就要分别为数据和函数的代码分配存储空间。

  • 事实上,给对象赋值就是给对象的数据成员赋值,不同对象的存储单元中存放的数据值通常是不同的,而不同对象的函数代码是相同的,不论调用哪一个对象的成员函数,其实调用的都是相同内容的代码。

  • 每个对象的存储空间都只是该对象的数据成员所占用的存储空间,而不包括成员函数代码所占用的空间,函数代码是存储在对象空间之外的。

  • 每个对象都有属于自己的数据成员,但是所有对象的成员函数代码却合用一份。

  • this 指针,称为自引用指针。每当创建一个对象时,系统就把 this 指针初始化为指向该对象,即 this 指针的值是当前调用成员函数的对象的起始地址

  • this 指针是隐式使用的,它是作为参数被传递给成员函数的。

  • 例如,当调用成员函数 a.disp 时,编译系统就把对象 a 的起始地址赋给 this 指针,于是在成员函数引用数据成员时:
    cout<<“x=”<< this->x <<endl;
    相当于执行:
    cout<<“x=”<<a.x<<endl;

  • this 指针的作用:每当调用一个成员函数时,系统就自动把 this 指针作为一个隐含的参数传给该函数。不同的对象调用同一个成员函数时,C++编译器将根据成员函数的 this 指针所指向的对象来确定应该引用哪一个对象的数据成员。

  • 例如,成员函数的定义如下:
    void disp( ){
    cout<<" x= "<<x<<endl;
    }
    实际是相当于执行:
    void disp( * this ){
    cout<<“x=”<< this->x<<endl;
    }
    在调用时a.disp( )也被处理成 a.disp(&a)

例 1 : 显示 this 指针的值

#include<iostream>
using namespace std;
class A{
	public:
		A(int x1){
			x=x1;
		}
		void disp(){
			cout<<"this="<<this<<" when x="<<this->x<<endl;
		}
	private:
		int x;
}; 
int main(){
	A a(1),b(2),c(3);
	a.disp();
	b.disp();
	c.disp();
	return 0;
}

输出结果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值