this指针指向被调用的成员函数所属的对象。
this指针是隐含每一个非静态成员函数内的一种指针。
this指针不需要定义,直接使用即可。
this指针的用途:
·当形参和成员变量同名时。可用this指针来区分
·在类的非静态成员函数中返回对象本身,可使用return *this
class A
{
public:
A(int a)
{
this->a = a;//等号后面的a是指形参中的a
}
int a;
};
返回对象本身
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
using namespace std;
class A
{
public:
A(int a)
{
this->a = a;
}
A& f(A &p)//要返回本体就要用引用的方式返回
{
this->a += p.a;
return *this;
//this指向p2的指针,*this指向p2本体
}
int a;
};
void t1()
{
A p1(1);
A p2(1);
p2.f(p1).f(p1).f(p1);//1+1+1+1
cout << "p2.a=" << p2.a << endl;
}
int main()
{
t1();
system("pause");
return 0;
}
返回值时
p2.f(p1)返回的相当于p2’,而p2‘.f(p1)返回的相当于p2‘‘。调用了拷贝构造函数。
拷贝函数调用时机:
- 使用一个已经创建完毕的对象来初始化一个新的对象,
- 值传递的方式给函数传值。
- 以值的方式返回局部对象。
void t()
{
A p(10);
A p1(p);
void t1(A p)
{
}
void t()
{
A p;
t1(p)
}
void t1()
{
A p1;
return p1;
}
void t()
{
A p=t1()
}