【C/C++】解析 类成员函数和this指针

news2024/11/19 9:25:32

创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
🔥c++系列专栏:C/C++零基础到精通 🔥

给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ

在这里插入图片描述

c语言内容💖:

专栏:c语言之路重点知识整合

【c语言】全部知识点总结


目录

  • 一、类成员函数
  • 二、this指针

一、类成员函数

类成员函数属于类本身,在编译期间存在,并且每个类只有一份。

它们与是否定义对象无关,可以通过类名直接访问调用。

类成员函数属于类的一部分,在对象创建时并不会分配内存空间

类成员函数只有一份,多个对象共享同一个函数!

class CTest
{
public:
	int m_a;
	void fun()
	{
		cout << __FUNCSIG__ << endl << m_a << endl;
	}
	CTest()
	{
		m_a = 10;
	}
};

int main()
{
	CTest test;
	test.fun();
	return 0;
}
void fun(CTest* pTest)
{
	cout << __FUNCSIG__ << pTest->m_a << endl;
}

在这里插入图片描述

	CTest* ptst = nullptr;
	ptst->fun();  		//CTest::fun ,空指针对象也可以调用一般的类成员函数,但是不推荐这样写

在这里插入图片描述

二、this指针

类成员函数与 this 指针密切相关,this 指针是一个隐式参数,指向调用该成员函数的对象。

类中的非静态成员函数包括构造、析构函数,会有一个默认的隐藏的参数this 指针

它是编译器默认加上的在所有参数之前,类型为当前类的指针 即:类 * const this

在这里插入图片描述

当我们在用对象调用函数的时候,this指针就指向了调用的对象
在函数中使用类成员属性或其他类成员函数都是默认通过this指针调用的
在平时写代码的时不用显示的指明this,因为编译器会默认加上

void fun(/*   CTest * const this   */)
	{
		cout << __FUNCSIG__ << endl << m_a << endl;
		this->m_a;		// 等价于 m_a;

		show();
		this->show();	// 等价于 show();
	}
	void show()
	{
		cout << "show" << endl;
	}

在这里插入图片描述

this指针的作用:

  • 指向调用该函数的对象,函数中使用类成员都是通过this指针调用

  • 连接对象和成员函数,可以在函数中无感知的使用成员

使用:

既可以显式访问 this 指针,也可以省略它,并直接使用成员变量和其他成员函数的名称访问

  • 可以使用 this->成员名

  • 或者省略 this-> 直接使用成员名来访问类的成员变量和调用其他成员函数


在这里插入图片描述

大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!如果本文哪里有错误的地方还请大家多多指出(●'◡'●)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/699679.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RuntimeError: CUDA error: an illegal memory access was encountered

在跑一个Transformer的代码时&#xff0c;出现了这个错误。这个错误信息非常奇怪&#xff0c;通过Debug发现&#xff0c;模型的前向传播是正常的&#xff0c;损失也能计算出来&#xff0c;但是一开始反向传播就出问题了。经过尝试&#xff0c;发现是batch_size过大&#xff0c;…

SpringMvc中文件上传

文章目录 1.导入文件上传所需要的jar包 2. 配置文件解析器 3.写一个前端页面 4.写后台程序 1.导入文件上传所需要的jar包 <dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.…

UTONMOS:元宇宙究竟是什么?

元宇宙其实是一个很好玩的事&#xff0c;就在前几年&#xff0c;很多人还认为当时元宇宙的概念市场上被叫做伪概念、纯营销概念&#xff0c;很多行业里的朋友们都说这是骗子才提的。 但是经过半年的发酵和发展&#xff0c;现在大家对“元宇宙”的认知就很不同了&#xff0c;因…

C++数据结构笔记(2)线性表顺序存储的底层实现

本章总结单链表的顺序存储方式及其C实现&#xff0c;重点的理论只需要熟背以下3条&#xff1a; 1.线性表是0个或者多个数据元素的有限序列&#xff0c;其中数据元素类型相同 2.线性表可以逐项访问和顺序存储 3.有顺序存储和链式存储两种存储方式。 接下来&#xff0c;通过动…

Android 逆向入门保姆级教程

作者&#xff1a;37手游移动客户端团队 前言 什么是 Android 逆向开发&#xff1f; Android 逆向开发是指对已发布的 Android 应用进行分析和破解&#xff0c;以了解应用程序的内部工作原理&#xff0c;获取应用程序的敏感信息&#xff0c;或者修改应用程序的行为。逆向开发可…

全网最牛,接口自动化测试mock框架模块实战,入门到高阶...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 mock的介绍 py3已…

基于Docker-compose实现的Postgresql-11的主从复制

参考文章&#xff1a; http://t.csdn.cn/EnOVn http://t.csdn.cn/XTJqZ 记录一次主从复制的配置经历 服务器主从角色分配 ipdb 版本角色192.168.33.23411主192.168.33.22511从 docker-compose.yml文件 version: "3.3" services:postgres:image: postgresql-gis:11…

Windows11添加用户自定义短语

比如要输入手机号码&#xff0c;直接输入sj就会弹出预先设定好的手机号&#xff0c;也可以预先设置好邮箱&#xff0c;身份证等等&#xff0c;这样就不用输入了 这个咋设置的有时候确实会忘记&#xff0c;所以就记下来了 步骤 第一步 打开设置 时间和语言>语言和区域 第二…

WebRTC的技术原理和使用浅析

一、基本介绍 WebRTC即网页即时通信&#xff0c;是一个支持网页浏览器进行音视频对很多 技术方案。 二、技术特征 1.实时通讯: WebRTc是一项实时通讯技术&#xff0c;允许网络应用或者站点&#xff0c;在不借助中间媒介的情况下&#xff0c;建立浏览器之间点对点的连接&…

Java读取文件内容到字符串

例如当前在D:\\test目录下有一个名为demo.txt的文件&#xff0c;文件里面的内容如下图所示&#xff1a; 第一种方式&#xff1a; 使用BuffererReader 缓冲字符输入流 import lombok.extern.slf4j.Slf4j;import java.io.BufferedReader; import java.io.File; import java.io.…

css对盒模型的理解

面试碰到的一个问题&#xff0c;记录一下 ’ CSS3中的盒模型有以下两种&#xff1a;标准盒子模型、IE盒子模型 盒模型都是由四个部分组成的: 分别是margin、border、padding和content。 标准盒模型和IE盒模型的区别在于设置width和height时&#xff0c;所对应的范围不同&#…

csproj文件常用设置及C#注释常用写法

csproj文件常用设置及C#注释常用写法 .NET新版SDK风格的csproj文件 打开可为空警告 <PropertyGroup><Nullable>enable</Nullable> </PropertyGroup>启动全局引用using 下图没有任何using&#xff0c;仍然不报错 <PropertyGroup><Implicit…

扑克牌最优组合算法题(动态规划+备忘录+快排)

题目如下 题目&#xff1a; 设一副包含点数从A到K,四种花色的52张牌, 将 三张及以上同点数不同花色的牌组 或者三张以及上的同花顺称为 组合, 求出给定一副20张以内的牌中,所能形成的最优的组合列表(最优即组合点数累加最大) 代码要运行正确而且要做输入处理&#xff0c;输出格…

Uncaught TypeError: Illegal invocation

使用console.time报错 console.time将在当前对象(即支持)的上下文中执行&#xff0c;发现一些老的chrome版本中&#xff0c;上下文可能有问题. 解决&#xff1a; 可以使用 console.time.call(window,1111)

关于Easy Mesh

随着网络技术的高速发展&#xff0c;家庭宽带进入了千兆时代&#xff0c;AR&#xff0c;VR&#xff0c;8K影视等高品质产品和智能家居正以前所未有的速度进入寻常百姓家&#xff0c;由于网络覆盖的问题&#xff0c;给WIFI网络应用带来了更大的考验。 WIFI网络覆盖一般是有四种方…

git下载总是报错:身份认证失败的解决办法

在利用git命令下载代码时&#xff0c;提示输入用户名和密码&#xff0c;但是总是显示身份认证失败&#xff0c;在修改密码后仍然没有解决。于是&#xff0c;换了一种方式&#xff0c;采用SSH。 首先在本地生成ssh-key 在虚拟机中执行命令 ssh-keygen -t rsa -C "github…

不再手动PS,教你如何快速删除图片文字!

可以让你快速从照片中提取和复制任何对象的应用。它可以让你轻松地将照片中的物品、人物、动物、文字等放到其他应用中&#xff0c;比如Photoshop、PowerPoint、Word等。ClipDrop还有一个很有用的功能&#xff0c;就是可以去除照片中的文字&#xff0c;让你得到一个干净的背景。…

【MySQL】MySQL数据库基础

目录 一、数据库概念 二、数据库基本使用 1、链接服务器 2、服务器管理 3、使用案例 3.1、创建数据库 3.2、使用数据库 4、服务器&#xff0c;数据库&#xff0c;表关系 三、MySQL架构 四、SQL分类 五、存储引擎 1、存储引擎概念 2、查看存储引擎 3、存储引擎对比…

【强化学习】常用算法之一 “A3C”

作者主页&#xff1a;爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个…

前端JS一维数组转树状数组并获取当前节点的所有父级名称或id

注意一维数组里面必须要有属性跟父级关联 test(){const list2 [{id: 1,pid: 0,name: 湖南},{id: 2,pid: 1,name: 长沙},{id: 3,pid: 2,name: 雨花区},];// 参数一:需要转树状数组的数组// 参数二:父id// 参数三:当前递归的父级节点name// 参数三:当前递归的父级节点idconst ar…