background image

class

 Student{

public

:

int

 age; 

int

 no; 

int

 scores;

void

 initStudent();

void

 addScore(

int

 score);

}

const 常量可以有物理存放的空间,因此是可以取地址的

///

this 指针是在创建对象前创建.

this 指针放在栈上,在编译时刻已经确定.

并且当一个对象创建后,并且运行整个程序运行期间只有一个 this 指针.

2011-09-24 14:54

C++中 this 指针的使用

一、关于 this 指针的一个精典回答
当你进入一个房子后,
你可以看见桌子、椅子、地板等,
但是房子你是看不到全貌了。
对于一个类的实例来说,
你可以看到它的成员函数、成员变量,
但是实例本身呢?
this 是一个指针,它时时刻刻指向你这个实例本身。
二、从语言层次上讲
this 指针作为一个隐含参数传递给非静态成员函数,用以指向该成员函数所属类所定义的
对象。当不同的对象调用同一个类的成员函数代码时,编译器会依据该成员函数的 this 指
针所指向的不同对象来确定应该引用哪个对象的数据成员。

三、类的 this 指针的特点
(1)this 只能在成员函数中使用。全局函数、静态函数都不能使用 this。实际上,成员函数
默认第一个参数为 T * const this。
如:
 class A
 {
 public:
 int func(int p)
 {
 }
 };
其中,func 的原型在编译器看来应该是:
 int func(A * const this,int p);
(2)由此可见,this 在成员函数的开始前构造,在成员函数的结束后清除。这个生命周期
同任何一个函数的参数是一样的,没有任何区别。
当调用一个类的成员函数时,编译器将该类的指针作为函数的 this 参数传递进去。如: