C++类中的this指针与常函数

this指针:指向访问成员函数对象的指针,默认是隐藏的,但也可以显示使用。

对象调用成员函数时会自动计算它的内存地址传递给成员函数中的this,而在成员函数调用其它成员函数,会把对象的地址接力传递下去。

构造函数中也有this指针,指向这个正在构造的对象,原因是构造函数执行前对象所需的内存就已经分配完毕,执行构造函数的目的是为了申请其它资源、做一些准备工作,对指针成员分配内存。

this指针的用法:
1、函数参数与成员变量重名,参数会屏蔽成员变量,可以通过this指针访问成员变量。

class Test
{
		int a;
public:
		Test(int a)
		{
			this->a = a;	
		}
};

2、如果成员函数需要返回当前对象的地址或引用,可以使用this指针完成。

class Test
{
public:
   		Test* func(void)
   		{
   			return this;
   		}
}

3、可以把this指针传递给其它类对象,这样可以实现对象间的交互。

class A
{
public:
	int a;
	A* func(void)
	{
		return this;
	}
};

class B
{
public:
	void func(A* p)
	{
		cout << p->a << endl;
	}
};

常函数:如果对象被const修饰,那么它就不能调用普通的成员函数,因此普通成员函数的this指针没有被const修饰,而const对象在调用成员函数传递的对象指针带const属性,因此不兼容。

在类的成员函数末尾用const修饰一下,就表示用const修饰该成员函数的this指针,这种函数叫常函数,const对象只能调用常函数,常函数也只能调用常函数。

如果一个成员函数可能被const对象和非常对象调用,则可以重载,实现两个版本,const指针和非const指针可以影响函数的重载。

如果在常函数中要修改成员变量值,可以使用mutable修饰成员变量即可。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值