关于C++ this指针你需要知道的

背景

上课讲到类的时候就简单提了一下,但是慢慢后面学习构造、析构、拷贝构造,再到后面重写String类的函数的时候,明显感觉自己对this指针理解的是在太过浅薄,因此回来补一下。
(书本上)this关键字:
用于区别局部变量和成员变量
只能在类成员函数中使用,指向调用该成员函数的对象

解释

在类中,用户自定义了一个class A,其中有成员变量和成员函数,当我们在主函数创建这个类的对象的时候就相当于是走进了A房间。在你进入房间后,你可以看见你曾经“买”回来的各种家具用品(成员变量和成员方法),但是房子A的全貌你已经看不见了。
this指针的作用就是可以永远指向这个类A。this的类型就是A *,对其返回return *this; 其实就是返回了类A类型的变量。

为什么会有this指针的出现

通常在class定义时要用到类型变量自身,因为这时候还不知道变量名(为了通用也不可能固定实际的变量名),就用this这样的指针来使用变量自身。
形如java定义student类时候写的get()和set()函数,其中就是因为在定义类的时候还不知道后面引用时会传入哪个变量。
“我用一个类 类型的指针指向成员变量,用以接收创建对象时候传过来的变量”

例子

java 中 写某个类的时候
public class student {
	int num;
	char name;
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}
	public char getName() {
		return name;
	}
	public void setName(char name) {
		this.name = name;
	}
}


C++中写类的拷贝构造函数(深拷贝):
student(const student &s){
	num = s.num;
	this->name = new char[strlen(s.name) + 1];
	strcpy(this->name,s.name);
}

this的两个使用:

一种情况就是,在类的非静态成员函数中返回类对象本身的时候,直接使用 return *this;另外一种情况是当参数与成员变量名相同时,如this->n = n (不能写成n = n)。

this指针记录每个对象的内存地址,然后通过运算符->访问该对象的成员

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值