iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >带你了解C++this指针的用法及其深究
  • 709
分享到

带你了解C++this指针的用法及其深究

2024-04-02 19:04:59 709人浏览 泡泡鱼
摘要

目录前言一、this指针是个什么东东,重要吗?二、案例理解主要的用途总结前言 今天,码神像一个新车手一样,尝试着用模板来更新一下,不要建议哦,毕竟没有放弃爱情的拓海也不是真正的车神,

前言

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

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

首先,我以码神的名义起誓,this指针绝对重要,尤其是对于c++这个面向对象编程的语言来说!

有的码手可能要说了:你说重要就重要?那我还说不重要呢?

这个么,空口无凭,我现在来举一个例子:

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

注:

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

请添加图片描述

二、案例理解

代码如下(示例):


#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

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

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

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: 带你了解C++this指针的用法及其深究

本文链接: https://www.lsjlt.com/news/133040.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 带你了解C++this指针的用法及其深究
    目录前言一、this指针是个什么东东,重要吗?二、案例理解主要的用途总结前言 今天,码神像一个新车手一样,尝试着用模板来更新一下,不要建议哦,毕竟没有放弃爱情的拓海也不是真正的车神,...
    99+
    2024-04-02
  • C++中this指针理解及作用
    目录01、C++程序到C程序的翻译02、this指针的作用03、this指针和静态成员函数04、小结01、C++程序到C程序的翻译 想要理解C++语言中的this指针,下面我们做一个...
    99+
    2024-04-02
  • C++深入浅出讲解隐藏this指针的用法
    目录1.this指针的引出2.this指针的特性3.练习一下本篇文章我们将一起讨论在有趣的知识点--隐藏的this指针。本篇我们要使用到之前我们所学习到的C++类与对象,如果有各位小...
    99+
    2024-04-02
  • C++ const的使用及this指针常方法(面试最爱问的this指针)
    目录1. const的使用2. this指针 2.1 前言(this指针的引出)2.2 什么是this指针2.3 this指针的特性2.4 [面试题1] this指针存在哪...
    99+
    2024-04-02
  • c++中this指针的用法详解
    this 指针是 c++ 中的特殊指针,指向当前对象实例,用于访问成员变量、调用成员函数,传递给其他函数,限制对成员的访问,以及与其他指针区分。 this 指针在 C++ 中的用法 t...
    99+
    2024-05-08
    c++
  • 深入了解Golang的指针用法
    目录1.指针类型的变量2.Go只有值传递,没有引用传递3.for range与指针4.闭包与指针5.指针与内存逃逸与C语言一样,Go语言中同样有指针,通过指针,我们可以只传递变量的内...
    99+
    2024-04-02
  • 一篇文章带你了解C++智能指针详解
    目录为什么要有智能指针?智能指针的使用及原理RALLshared_ptr的使用注意事项创建多个 shared_ptr 不能拥有同一个对象shared_ptr 的销毁shared_pt...
    99+
    2024-04-02
  • 深入了解C++智能指针的使用
    目录一、C++11智能指针概述二、C++98中的智能指针三、C++11中的智能指针1.unique_ptr2.shared_ptr3.weak_ptr一、C++11智能指针概述 在C...
    99+
    2024-04-02
  • C++深入探究类与对象之对象模型与this指针使用方法
    目录C++对象模型和this指针1 成员变量和成员函数分开存储2 this指针概念3 空指针访问成员函数4 const修饰成员函数C++面向对象的三大特性为:封装、继承、多态 C++...
    99+
    2024-04-02
  • C++中指针的详解及其作用介绍
    目录概述指向对象的指针指向对象数据成员的指针this 指针this 指针的作用this 指针的实现概述 指针 (pointer) 是一个变量, 其指为另一个变量的地址. 即内存位置的...
    99+
    2024-04-02
  • 深入理解c++指针的指针和指针的引用
    在C++中,指针是一种数据类型,可以存储变量的内存地址。指针的指针和指针的引用是两种特殊的指针类型。指针的指针是指一个指针变量的值是另一个指针的地址。也就是说,指针的指针存储的是一个指针变量的地址。可以通过多次间接引用来获取最终指向的变...
    99+
    2023-08-09
    c++
  • C++ 中this指针的用途详解
    目录1.区分形参和变量同名时:2.return *this返回函数本身总结先说结论: 1.形参和变量同名时,可用this指针来区分 2.在类的非静态成员函数中返回本身,可用retur...
    99+
    2024-04-02
  • 一篇文章带你了解C语言指针进阶
    目录1.字符指针2.指针数组3.数组指针4.函数指针5.数组传参总结1.字符指针 我们已经知道了数组名在大部分时候表示数组的地址,指针本质上也表示一个地址,那么我们能否用指针来创建一...
    99+
    2024-04-02
  • C++简明图解this指针的使用
    目录成员数据和成员函数的存储方式this指针的引入this指针概述this指针的使用c++的封装性:将数据 和 方法 封装在一起 数据 和 方法 是分开存储。 每个对象 拥有独立的数...
    99+
    2024-04-02
  • C语言指针和数组深入探究使用方法
    目录1、数组参数和指针参数1.1 一维数组传参1.2 一级指针传参1.3 二维数组参数和二级指针参数1.4 野指针的问题2、函数指针3、函数指针数组4、指向函数数组的指针5、回调函数...
    99+
    2022-11-13
    C语言指针和数组 C语言指针 C语言数组
  • C++的智能指针你真的了解吗
    目录什么是RAIIRAII的原理裸指针存在的问题auto_ptrunique_ptr总结什么是RAII RAII(Resource Acquisition Is Initializa...
    99+
    2024-04-02
  • 深入了解C语言中的const和指针
    目录前言指针的赋值问题ANSI C 有关简单赋值的标准问题解决const修饰const修饰变量const修饰指针前言 文章内容由阅读《C专家编程》整理而来。希望可以帮助大家解决在指针...
    99+
    2024-04-02
  • 带你了解C++中vector的用法
    目录一,什么是vector二,容器特性1,顺序序列2,动态数组3,能够感知内存分配器三,常用基本函数实现四,基本用法1,头文件2,创建和使用3,算法五,vector占用内存空间问题1...
    99+
    2024-04-02
  • C语言的多级指针你了解吗
    目录前言一、多级指针概念二、多级指针的使用1.二维指针总结前言 自学笔记,没有历史知识铺垫(省略百度部分)C语言了解多级指针的使用 一、多级指针概念 指向指针的指针 即:存放地址的...
    99+
    2024-04-02
  • 深入了解C++中常用的三个智能指针
    目录什么是智能指针C++中的几种智能指针unique_ptrshared_ptrweak_ptr总结什么是智能指针 在C++中,内存的分配和释放都是由开发者手动实现的。这种方式虽然很...
    99+
    2023-05-18
    C++智能指针 内存管理 C++智能指针使用 C++ 智能指针
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作