/*
============================================================================
Name : struct的this指针
Author :
Version :
Copyright : Your copyright notice
Description :
============================================================================
*/
#include
#include
//结构体
typedef struct Pt
{
int x;
int y;
} Point;
//打印
void print(Point *this)
{
printf("(%d,%d) ",this->x,this->y);
}
//初始化
void initialize(Point *this,int x,int y)
{
this->x=x;
this->y=y;
}
//相加
void add(Point *this,Point a,Point b)
{
this->x=a.x+b.x;
this->y=a.y+b.y;
}
int main()
{
Point a;
Point b;
initialize(&a,1,3);
initialize(&b,3,6);
print(&a);
print(&b);
add(&a,a,b);
print(&a);
printf("\nHello World!!!\n");
exit(0);
}
/*
============================================================================
Name : class的this指针
Author :
Version :
Copyright : Your copyright notice
Description :
============================================================================
*/
#include
using namespace std;
class Point
{
private:
int x;
int y;
public:
void print();
void initialize(int x,int y);
void add(Point a,Point b);
} ;
//打印
void Point::print()
{
cout<<"("<
x<<","<
y<<") ";
}
//初始化
void Point::initialize(int x,int y)
{
this->x=x;
this->y=y;
}
//相加
void Point::add(Point a,Point b)
{
this->x=a.x+b.x;
this->y=a.y+b.y;
}
int main()
{
Point a;
Point b;
a.initialize(1,3);
b.initialize(3,6);
a.print();
b.print();
a.add(a,b);
a.print();
cout <
<< "Hello World!!!" << endl; // prints Hello World!!!
exit(0);
}
对比上面两组代码,可以看出在class中用“实例.方法(参数)”的实现方式和在struct中“方法(&实例,参数)”的实现方式效果相同,也就是说class隐含了指向本实例的指针,即this指针(代替了"&实例")。