你定义了一个类,这个类就有个this指针了,指向他自己,和我们定义的指针的用法一样。只是不用我们写出来
借用JAVA里常见的内容来描述一下好了
class A
{
public:
int a;
void set(int a);
}
void A::set(int a)
{
this->a = a;
}
任何时候都可以使用的指针,并无需定义,因为系统已经定义过了,但一定是指向当前对象。
形象理解?
那么考虑“人”这类东西。
你是一个人,我是一个人,我们可以说“人”就是一个class,而你和我分别是“人”对象,当你说“'我'吃饭去了”的时候,你所说的“我”指的是你自己而不是我(davidaq ^_^)。而我说“'我'在回答你的问题”时,这里的“我”指的是我(davidaq)而不是你。
综合来说,当任何一个人说“我”的时候,他指的都是那个说话的人自己,“我”这个字不同的人说的指代的人不同。这里的“我”就相当于this。
this是指向对象的指针,不是类,人说“我”不是说人这类东西,而是说一个具体的人,而且还是这个人本身。所以this就指向调用它(this)的对象自己。
this指针是一个特殊的指针,指向正在被某个成员函数操作的对象的指针;利用它,可以深入地理解C++程序中对象的构造和析构,了解对象在内存中的分配的释放的情况,深入地理解程序。
关键字:this 指针;内存;对象;构造;析构
Abstract:The “this” pointer is a special pointer, which point address of an object whose member function is being run; using the “this” pointer, we may understand the process of one object’s construction and destruction in C++ programs, and know about that how to assign memory for one object and free the memory, and understand the programs deeply.
Key words: “this” pointer; memory; object; construct; destruct
引言
对于计算机专业的学生来说,不仅需要熟练掌握C++的语法结构和它们的灵活应用,还需要了解C++程序运行时内存的分配情况。内存是一种紧缺资源,只有深入了解程序运行时的内存分配情况,才能够灵活运用所学的知识,充分利用内存。C++中提供了一种非常有用的指针:this指针,利用它可以帮助我们深入地理解C++程序运行时的内存分配情况。
1. 对象
C++,在程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“C plus plus”,它是一种使用非常广泛的计算机编程语言。它支持过程程序设计和面向对象程序设计等多种程序设计风格。在面向对象程序设计中,类与对象是两个非常重要而又密切相关的概念。类是对象的抽象,而对象是类的实例。在学习面向对象的程序设计过程中,学生接触最多的是类和对象。
对于对象,如何在内存中给它们分配空间呢?请看下面的例子,程序名“point.cpp”
#include
class Point
{
public:
Point(int xx=0,int yy=0)
{ x=xx; y=yy; }
int x,y;
};
void main()
{
Point p1,p2(2,2);
Point p3(3,3);
cout<<"&p1="<<&p1<<" &(p1.x)="<<&(p1.x)<<", &(p1.y)="<<&(p1.y)<
cout<<"&p2="<<&p2<
cout<<"&p3="<<&p3<
}
为了了解对象及对象的成员变量在内存中的分配情况,在Point类定义中全部成员都在公有部分,为的是在main()函数中可以查看它们的地址。