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 参数传递进去。如: