C++语言学习记录-24:this指针

成员变量和成员函数分开存储

在一个类当中,成员变量和成员函数是分开存储的,而每一个非静态成员函数的调用实际上只会生成一个函数实例,即多个类型的对象会共用一套函数代码

this指针

上面的那“一块代码”是如何区分自己是被哪一块函数调用的?这里C++引入了this指针来解决这一问题。this指针将指向被调用的成员函数所属的对象。
还是那一个经典的解释:当你走进了一间房子,但是这间房子的陈设和别的房子的是一模一样的,你对房子的陈设做了改变,那么你能知道你是对那一间房子做了改变吗?
这样的问题也发生在函数上。看下面的代码:

#include<iostream>
#include<string>
using namespace std;
class Student{
public:

	void setName(string name)
	{
		name1 = name;
	}
	void showName()
	{
		cout<<name1<<endl;
	}
private:
	string name = "John";
};
int main()
{
	Student s1;
	Student s2;
	s1.setName("Danny");
	s2.setName("Cindy");
	
	s1.showName();
	s2.showName();
	return 0;
}

上述代码的运行结果为

Danny
Cindy

但是在传入参数的时候并没有附带对象的地址,那么编译器又是如何知道我们传入的参数是对应于哪一个对象的呢?
这里的原因就在于this指针,实际上,每一个对象都有一个this指针,并且可以通过this指针来访问自己的地址。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值