C++this指针

概念

1.定义
  this 指针是只能在 class 、 struct 或类型的非静态成员函数内访问的指针 union,其隐含于每一个非静态成员函数中。
2.实质
  1.对象的 this 指针不是对象本身的组成部分,因此它不会在对象的语句结果中反映出来 sizeof 。
  2.this 指针指向为其调用成员函数的对象,且其作用域是在类内部.
  3.this 实际上是成员函数的一个形参,在调用成员函数时将对象的地址作为实参传递给 this, 当为某个对象调用非静态成员函数时,编译器会将该对象的地址作为隐藏参数传递给该函数。
例:

myDate.setMonth( 3 );
setMonth( &myDate, 3 );
//二者所表达的含义一样

用途

1.当形参和成员变量同名时,只可以用this指针来区分。

eg:

class Student
{
public:
	Student(int age)
	{
		age  = age;
	}
	int age;
}

  此时我们这个学生类中成员函数的参数和成员变量重名,如果写作age = age;这样的语句,就是给形参age赋值,而不是给成员变量age赋值,因此我们需this指针来区分:

this->age = age;

此时我们便是给成员变量age赋值,另外this 是一个指针,要用->来访问成员变量或成员函数。

2.在类的非静态成员函数中返回对象本身。

return *this;通常用于从成员函数返回当前对象。
eg:

Student& StudentAdd(Student &s)
{
	this->age = s.age;
	return *this; 
}
3.this 指针还可用于防止自引用

eg:

if (&Object != this) {
}

注意:
1.this 是 const 指针,它的值是不能被修改的,一切企图修改该指针的操作,如赋值、递增、递减等都是不允许的。
2.对象的地址在成员函数内作为 this 指针提供。 大多数 this 指针使用都是隐式的。 虽然不必要,但 this 在引用的成员时使用显式是合法的 class 。 例如:

void Date::setMonth( int mn )
{
   month = mn;            // These three statements
   this->month = mn;      // are equivalent
   (*this).month = mn;
}

3.c++中空指针也可以调用成员函数,但在使用前需先判断this指针的有无。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值