c++中this指针

this指针
在程序设计中,往往在定义函数成员时还没有具体的对象出现,但函数成员的定义中却往往要对它将要依附的对象进行处理。为此,c++语言为每个类的定义设置一个抽象的指针常量:this指针
this是关键字,属于实体(entity),是一个指针右值,只能在class, struct和union类型中的非静态成员函数/函数模板class指针访问,指向被调成员所属的对象。静态成员中无法使用this指针。
其有以下特征:
(1)this指针是类的指针类型,指向该类的对象地址。
(2)this指针是在该类的对象被创建时,同时被说明和创建。

(3)this指针是一个隐藏与每一个类的成员函数中的特殊指针(包括构造函数和析构函数),它用于指向正在被成员函数操作的对象。



下面来看一个关于this指针的例子:

#include<iostream>
using namespace std;
class S
{
	public:
			S(int x, int y)
			{
				this->x=x; this->y=y;
			}
			int Getx() 
			{ 
			cout<<"x=";
			return x;
			}
			
			int Gety() 
			{
			cout<<"y=";
			return y;
			}
	private:
			int x,y;
};
int main()
{
	S *p;
	S s(6 , 3);
	p=&s;
	cout<<p->Getx()<<endl;
	cout<<p->Gety()<<endl;
}
输出结果:

x=6

y=3


使用带有this指针的成员函数

将修饰符const写在函数头之后,函数体之前,说明该函数是一个常成员函数,此时的const不是指函数返回值而是指函数体中使用this指针。

例如:

#include<iostream>
using namespace std;
class Myclass
{
	public:
		Myclass(int i, int j)
		{
			m1=i;
			m2=j;
		}
		int fun1() const { return m1;};
		int fun2() const { return m2;};
	private:
		int m1,m2;
};
int main()
{
	Myclass S(88, 66);
	cout<<"M1="<<S.fun1()<<endl;
	cout<<"M2="<<S.fun2()<<endl;
	return 0;
}

结果为:

M1=88

M2=66




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值