this指针的出现是因为在早期没有c++编译器,c++程序只能使用c语言的编译器进行编译。所以c++的程序先需要翻译为程序。
C++程序如下:
class Demo
{
int id;
public :
Demo(int i)
{
id = i;
cout << "id = " << id << "创建" << endl;
}
~Demo()
{
cout << "id =" << id << "释放" << endl;
}
void Func_a(int i)
{
id = i;
cout << "类函数" << id << endl;
}
};
int main()
{
Demo A(1);
A.Func_a(20);
return 0;
}
翻译后的C程序:
#include "pch.h"
#include <iostream>
using namespace std;
struct Demo
{
int id;
};
void Func_a(struct Demo * this, int i)
{
cout << "类函数" << i << endl;
}
int mian()
{
struct Demo A;
Func_a(&A,20);
return 0;
}
this指针的作用就是指向成员函数所作用的对象。
class shi_shu
{
public:
int shi_bu, xv_bu;
shi_shu();
shi_shu(int i,int j);
~shi_shu();
shi_shu add_one()
{
this->shi_bu++;
this->xv_bu++;
return *this;
}
int print()
{
std::cout << " " << shi_bu << " " << xv_bu << std::endl;
return 0;
}
};
shi_shu::shi_shu()
{
}
shi_shu::shi_shu(int i,int j)
{
shi_bu = i;
xv_bu = j;
}
shi_shu::~shi_shu()
{
}
int main()
{
std::cout << "Hello World!\n";
shi_shu A(1,2),B;
A.print();
B = A.add_one();//将A对象中的值++后拷贝给B对象
B.print();
}