您的位置:首页 > 编程语言 > C语言/C++

c++ this指针详细介绍

2018-01-19 14:24 204 查看
一、this指针的知识:
每个对象通过this指针来访问自己的地址。this指针并不是对象的一部分,this指针所占

的内存大小是不会反应在sizeof操作符里。this指针的类型取决于使用(this指向的)对

象类型。

二、为什么静态方法里没有this指针?
静态方法和静态变量一样,它不属于某个对象,是所有对象共享的成员,可以说

他是属于类的。而this指针是指向具体的某个对象的。所以静态方法里不含有this指针。

三、this指针什么时候创建的?
this在成员函数的开始执行前赋值,在成员函数执行结束后清除。

实际上编译器是这样实现this指针的:

1.改变类成员函数的定义,用附加参数this指针来确定具体的对象。如:

void Cgoods::RegisterGoods(Cgoods*this,char*nam,int amount,float price)

{

    strcpy(this->Name,name);this->Amount=amount;

    this->price=price;

}

2.每个类成员函数的调用,加上一个附加的实参——被调用对象的地址。如:

    Car1.RegisterGoods ( String , number , pr );

改变为:

    RegisterGoods ( &Car1 , String , number , pr);

编译器会在每个非静态的成员函数里加上一个this指针,当某个对象调用成员时,this指

针会指向该对象地址。在成员函数执行完后清除,只是清除栈空间。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: