Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >this指针用法及其深究

this指针用法及其深究

作者头像
秋名山码神
发布于 2022-12-13 06:06:37
发布于 2022-12-13 06:06:37
27200
代码可运行
举报
文章被收录于专栏:码神随笔码神随笔
运行总次数:0
代码可运行

文章目录


前言

今天,码神像一个新车手一样,尝试着用模板来更新一下,不要建议哦,毕竟没有放弃爱情的拓海也不是真正的车神,哈哈,发车了

一、this指针是个什么东东,重要吗?

首先,我以码神的名义起誓,this指针绝对重要,尤其是对于c++这个面向对象编程的语言来说! 有的码手可能要说了:你说重要就重要?那我还说不重要呢?

这个么,空口无凭,我现在来举一个例子: 我们知道对于一个类来说,要有很多工作要做,其中类的成员函数可以访问类的数据(限定符只是限定于类外的一些操作,类内的一切对于成员函数来说都是透明的),那么成员函数如何知道哪个对象的数据成员要被操作呢,这时c++中的this指针就应用而生了

注:

  1. 每个对象都拥有一个指针:this指针,通过this指针来访问自己的地址。
  2. this指针不是对象的一部分,故sizeof不会体现出this指针的大小,this指针的类型取决于使用this指针的成员函数类型以及对象类型。

二、案例理解

代码如下(示例):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<iostream>
using namespace std;

class Person
{
public:
	Person(int age)
	{
		this->age=age;
		//this指针指向被调用的成员函数所属的对象
	}
	int age;
	//int m_Age;
	void PersonAddAge(Person &p)
	{
		this->age += p.age;
		//this指向篇的指针,而*this指向的是篇这个本体
		return *this;
		
	}
}
//解决名称冲突
void text01()
{
	Person p1(18);
	cout<<"p1age:"<<p1.age<<endl;
}
//返回对象本身用*this
void text02()
{
	Person p1(10);
	Person p2(10);
	p2.PersonAddAge(p1);
	cout<<"p2的age:"<<p2.age<<endl;//20
	p2.PersonAddAge(p1).PersonAddAge(p1);
	cout<<"p2的age:"<<p2.age<<endl;//30
	//链式编程思想
	
}
int main()
{
	text01();
	text02();
	return 0;
}

主要的用途

当形参和成员变量同名时,可用this指针来区分 在类的非静态成员函数中返回对象本身,可使用return *this

总结

  1. 通过上面我们知道在C++中成员变量和成员函数是分开存储的
  2. 每一个非静态成员函数只会诞生一份函数实例,也就是说多个同类型的对象会共用一块代码
  3. c++通过提供特殊的对象指针,this指针,解决上述问题。this指针指向被调用的成员函数所属的对象
  4. this指针是隐含每一个非静态成员函数内的一种指针
  5. this指针不需要定义,直接使用即可

最后:this指针指向被调用的成员函数所属的对象

喜欢的,支持一下新人吧!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-08-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
C++对象模型和this指针实例分析(一)
PS:注意:一个空的类只占一个字节(为了区分空对象所占内存的位置),但是类里有了非静态成员变量后就占变量所对应的字节。
CtrlX
2022/08/10
3100
C++对象模型和this指针实例分析(一)
C++对象模型和this指针详解
这篇文章主要介绍了详解C++对象模型和this指针,是C++入门学习中的基础知识,需要的朋友可以参考下,希望能够给你带来帮助
米米素材网
2022/07/24
2470
C++对象模型和this指针详解
c++之this指针
this指针指向被调用的成员函数所属的对象。 this指针是隐含每一个非静态成员函数内的一种指针。 this指针不需要定义,直接使用即可。 用途: 当函数的形参和成员变量名重名时,可以用this进行区分。 在类的非静态成员函数中返回对象本身,可使用return *this。 #include<iostream> using namespace std; class Person { public: int age; void setAge(int age) { this->a
西西嘛呦
2020/08/26
3880
【C++】类和对象核心总结
a. 在C语言阶段我们就已经认识到了结构体,它可以帮助我们实现多种数据结构,功能强大不言而喻。在C++中为了更好的封装,以及更好的将现实生活抽象化为计算机世界,采用面向对象的思想帮助程序猿能够对用户需求进行抽象思维化,不得不需要类class的出现。
举杯邀明月
2023/04/12
7880
【C++】类和对象核心总结
类和对象(万字总结!深度总结了类的相关知识)(上)
为什么C++要学习类?学习C++中的类是掌握面向对象编程的关键。类提供了将数据与操作封装在一起的结构化方式,帮助开发者解决复杂问题、提高代码的可重用性和安全性。通过类的继承、封装、多态,可以更灵活地设计和扩展程序,同时模拟现实世界中的对象和行为,提升代码的可维护性和效率。掌握类有助于编写高效、清晰的代码,并应对复杂的软件系统设计。下面就由我来带大家深度剖析一下类和对象的真正奥秘…
suye
2024/10/16
1230
C++入门 学习记录
·整数基本整数类型:int;还可以按符号分:signed(默认不写)、unsigned;按照数据范围分:short、long、long long
用户6948990
2025/04/03
480
C++入门 学习记录
this指针的介绍和用法
this指针是面向对象程序设计的一项概念,在C++中,它表示当前运行的对象。在实现对象的方法时,this指针来获得该对象自身的引用。
全栈程序员站长
2022/08/29
5470
this指针的介绍和用法
C++的this指针
当你进入一个房子后, 你可以看见桌子、椅子、地板等, 但是房子你是看不到全貌了。 对于一个类的实例来说, 你可以看到它的成员函数、成员变量, 但是实例本身呢? this是一个指针,它时时刻刻指向你这个实例本身。
全栈程序员站长
2022/08/29
6010
【C++掌中宝】类和对象(二):隐藏的this指针
在 C++ 编程中,类是面向对象编程的核心,而类中的成员函数与对象的交互则通过一个隐含的指针来实现,这就是 this 指针。它在 C++ 类的非静态成员函数中自动存在并指向调用该函数的对象实例。在这篇文章中,我们将详细探讨 this 指针的定义、用法以及其背后的工作原理。
Crossoads
2024/10/22
1510
关于this指针
一个类的对象中实际只包含了该对象的数据成员信息,当我们创建了多个类的对象时,使对象1调用该类的成员函数,为什么可以改变对象1中的信息,而不去设置其他对象的信息?成员函数在类中只有一份,所有该类的对象共同使用,编译器是如何识别并处理的呢?
全栈程序员站长
2022/08/29
4480
关于this指针
单例模式
项目上总是用到单例,所以做一个小总结,之前在学校学习设计模式像背八股文一样,毫无实践可言
无敌清风蓝
2024/06/04
980
C++-面向对象(七)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
cwl_java
2019/10/28
3710
this指针小总结
在C++中,this指针是一个隐式的、非静态的成员指针,它指向调用它的对象的地址。每个非静态成员函数都含有一个this指针,该指针在成员函数中用于访问调用它的对象的成员。
ljw695
2024/10/18
900
解析this指针
每个对象中的数据成员都占有存储空间,如果一个类定义了n个对象的话,那么就有n个大小相等的空间来存放这n个对象的数据成员,但是不同的对象都调用同一个代码段。
全栈程序员站长
2022/08/30
1700
解析this指针
C++之this指针
有个问题是刚开始学习C++的人都想知道的,那就是C++的类对象的大小是多少?可能的猜测是它所有数据成员的大小加上所有函数指针的大小,这样就是类的大小。我们来测试一下:
zy010101
2020/04/08
4580
C++之this指针
【C++篇】类与对象的秘密(上)
在C++中,类和对象是面向对象编程的基础组成部分。通过类,程序员可以对现实世界的实体进行模拟和抽象。类的基本概念包括成员变量、成员函数、访问控制等。本篇博客将介绍C++类与对象的基础知识,为后续学习打下良好的基础。
平凡之路.
2024/10/20
1420
【C++篇】类与对象的秘密(上)
面向对象之this指针与类中的枚举类型
相信在坐的很多人,都在学Python,对于Python来说有self,类比到C++中就是this指针,那么下面一起来深入分析this指针在类中的使用!
公众号guangcity
2019/09/20
1.2K0
面向对象之this指针与类中的枚举类型
c++面向对象的一些问题1.0
构造函数 特殊的成员函数,给对象的初始化,不需要用户调用,建立对象时,自动执行 它的函数名字与类相同,可以重载,没有返回值和函数类型。 如果不写构造函数,类会给出一个无参数的构造函数。 复制构造函数 a.程序新建立一个对象时,用另一个对象对它初始化。 b. 函数的参数为对象。 c. 函数的返回值为对象。 ---- 特殊的数据成员 常数据成员,const声明,其值不能改变。 const string sex; 静态数据成员,static声明,属于类,只能在类外初始化。 stat
热心的社会主义接班人
2018/04/27
5810
c++面向对象的一些问题1.0
C++ 核心编程
实参通常是通过值传递给函数的,这意味着形参接收的只是发送给它们的值的副本,它们存储在函数的本地内存中。对形参值进行的任何更改都不会影响原始实参的值。
全栈程序员站长
2022/07/13
2.2K0
C++学习————第四天(类、this指针)
C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。
IsLand1314
2024/10/15
1090
C++学习————第四天(类、this指针)
相关推荐
C++对象模型和this指针实例分析(一)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验