当前位置: 首页 > news >正文

【C++】总结4-this指针

文章目录

  • 什么是this指针
  • this指针存在的意义
  • this指针的特性
  • this指针存在哪里
  • this指针可以为空吗

什么是this指针

C++编译器给每个非静态成员函数增加了一个隐藏的指针参数,让该指针指向当前对象(函数运行时调用该函数的对象),在函数体中所有成员变量的操作,都是通过该指针去访问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。

this指针存在的意义

this指针是一个指向当前对象的指针,用于在非静态成员函数中访问当前对象的成员。

主要意义:

  • 区分对象实例:类的代码段是共享的,每个对象实例只保存自己的成员数据,this指针确保每个成员函数正确的访问属于当前对象实例的成员

  • 隐式传递:this指针是隐式传递给非静态成员函数的一个特殊参数。在调用非静态成员函数时,编译器会自动在底层将调用该函数的对象的地址作为this指针传递给该函数。这样,我们在定义成员函数时无需显式声明this参数,而在调用成员函数时也不需要手动传递对象的地址

  • 成员访问:this指针使得成员函数可以访问当前对象的非静态成员变量和其他非静态成员函数,它扮演着连接成员函数与对象的桥梁,使得成员函数能够操作所属的对象

this指针的特性

  • this指针的类型:类类型*const
  • 只能在成员函数的内部使用
  • this指针本质上其实是一个成员函数的形参,是对象调用成员函数时,将对象地址作为实参传递给this形参
  • this指针是成员函数第一个隐含的指针形参,一般情况由编译器通过ecx寄存器自动传递,不需要用户传递

this指针存在哪里

编译器在生成程序时加入了获取对象首地址的相关代码。并把获取的首地址存放在了寄存器ECX中(VC++编译器是放在ECX中,其它编译器有可能不同)。也就是成员函数的其它参数正常都是存放在栈中。而this指针参数则是存放在寄存器中。类的静态成员函数因为没有this指针这个参数,所以类的静态成员函数也就无法调用类的非静态成员变量。

this指针可以为空吗

可以为空,当我们在调用函数的时候,如果函数内部并不需要使用到this,也就是不需要通过this指向当前对象并对其进行操作时才可以为空(当我们在其中什么都不放或者在里面随便打印一个字符串),如果调用的函数需要指向当前对象,并进行操作,则会发生错误(空指针引用)

http://www.lryc.cn/news/96143.html

相关文章:

  • go压力测试
  • 【计算机网络】socket编程基础
  • 学C的第三十天【自定义类型:结构体、枚举、联合】
  • Ubuntu(20.04):通过noVNC实现网页访问vnc
  • OpenAI的Function calling 和 LangChain的Search Agent
  • 【mysql数据库】MySQL7在Centos7的环境安装
  • 基于vue+element 分页的封装
  • 面试题模拟
  • Linux6.13 Docker LNMP项目搭建
  • 数据包协议栈处理
  • html刷新图片
  • PHP反序列化漏洞之魔术方法
  • 2023年的深度学习入门指南(20) - LLaMA 2模型解析
  • 智能安全配电装置应用场景有哪些?
  • Rust vs Go:常用语法对比(四)
  • c++ 派生类 文本查询程序再探
  • 17. 电话号码的字母组合
  • Redis 基础知识和核心概念解析:理解 Redis 的键值操作和过期策略
  • Jenkins中sh函数的用法
  • Android 之 Canvas API 详解 (Part 3) Matrix 和 drawBitmapMesh
  • 基于Ubuntu 22.04 编译chip-tool工具
  • opencv-17 脸部打码及解码
  • JVM分享
  • Apache Dubbo CVE-2021-36162 挖掘过程
  • 开源框架面试题目整理
  • Mr. Cappuccino的第52杯咖啡——Mybatis环境搭建与使用
  • 了解Unity编辑器之组件篇Tilemap(五)
  • Linux字符设备操作函数
  • 吉林大学计算机软件考研经验贴
  • 2023-07-26力扣每日一题-区间翻转线段树