c++中class 中的this指针

news/2024/7/5 4:20:31

1.this指针的经典描述:

当你进入一个房子后,   
你可以看见桌子、椅子、地板等,   
但是房子你是看不到全貌了。   
对于一个类的实例来说,   
你可以看到它的成员函数、成员变量,   
但是实例本身呢?   
this是一个指针,它时时刻刻指向你这个实例本身

2.this指针的使用:

一种情况就是,在类的非静态成员函数中返回类对象本身的时候,直接使用 return *this;
另外一种情况是当参数与成员变量名相同时,如this->n = n (不能写成n = n)。

3.this 指针的特点:

1)this只能在成员函数中使用。指向被调用函数所在的类实例的地址

    全局函数、静态函数都不能使用this,

2)this在成员函数的开始前构造,在成员函数的结束后清除。

 生命周期:同任何一个函数的参数一样
   实际上,成员函数默认第一个参数为T * const this。

  当对一个对象调用成员函数时,编译程序先将对象的地址赋给this指针,然后调用成员函数,每次成员函数存取数据成员时,由隐含使用this指针。
   如:class A
      {
       public:
       int func(int p)
        {}
       };
其中,func的原型在编译器看来应该是: int func(A * const this,int p); 

this指针被隐含地声明为: X *const this,这意味着不能给this 指针赋值

3)一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。

4)我们只有获得一个对象后,才能通过对象使用this指针


在C++中 ,类和结构是只有一个区别的:类的成员默认是private,而结构是public。this是类的指针,如果换成结构,那this就是结构的指针了。


http://www.niftyadmin.cn/n/4136293.html

相关文章

HDU 3177 Crixalis#39;s Equipment(贪婪)

主题链接:http://acm.hdu.edu.cn/showproblem.php?pid3177 Problem DescriptionCrixalis - Sand King used to be a giant scorpion(蝎子) in the deserts of Kalimdor. Though hes a guardian of Lich King now, he keeps the living habit of a scorpion like li…

怎样用python打开文件_你真的会用python进行文件操作吗

本篇文章主要比较系统的介绍了python中文件操作,以及在在使用中需要注意的问题。 什么是文件 文件是系统存储区域的一个命名位置,用来存储一些信息,便于后续访问。能够在非易失性存储器中实现持续性存储,比如在硬盘上。当我们要读…

2017年全球创新公司琅琊榜及10条成功启示录

导读:每年年初,FastCompany都会公布他们评出的最有创新力的10个公司榜单,今年是这个榜单公布的第十年。 今年的榜单上,除了谷歌、亚马逊等大公司,也不乏一些从小的方向切入市场的公司让人印象深刻。此外,中…

总结c++类的构造函数 拷贝构造函数 析构函数 赋值运算符重载的特点以及函数调用顺序

对 c类的构造函数 拷贝构造函数 析构函数 赋值运算符重载 相关知识的总结,并附上例子,希望对大家有帮助,有错误大家可以指出来 一 构造函数 1 构造函数: 构造函数时一个特殊的成员函数,用来初始化对象的数据成员&am…

2.1 线性表的逻辑结构与存储结构

在之前的数据结构知识铺垫2:物理结构与逻辑结构一文中, 我们介绍了物理结构与逻辑结构, 物理结构即存储结构. 本篇文章我们着重探讨一下线性表的逻辑结构与存储结构. 1. 线性表的逻辑结构 图1. 线性表的逻辑结构 线性表是具有相同特性的数据元素的有限序列, 每个元…

springMVC初探视图解析器——XmlViewResolver

XmlViewResolver解析器 XmlViewResolver基于XML文件中的视图bean来解析“逻辑视图”。XmlViewResolver默认会从/WEB-INF/views.xml中加载视图bean, 当然你也可以自己设置该xml文件的位置,该解析器有个属性“location”可设置xml位置 当处理器返回“逻辑视…

python装饰器class_python的装饰器

捋了一遍又一遍,终于对装饰器有了一点点的认识 基本的装饰器长这样: defadd_news(func):def new_func(*args, **kwargs):print("这是新添加的内容")return func(*args, **kwargs)return new_func add_news def my_func(): print("----som…

c++继承知识总结

c继承相关知识总结 一 继承关系:public protected private 不矫情 直接贴代码 举例代码主要从: a. 基类成员对其对象的可见性: 只有public成员可以访问 b. 基类成员对派生类的可见性: c. 基类成员对派生类对象的可见性&#xf…