C++知识:this 指针详解

自动化测试-自愈技术 随着人工智能的发展,作为一名软件测试工程师,相信大家都会思考如何把这一前沿技术引入到我们的自动化测试当中,想一万遍不如做一遍。,传递当前页面状态,获取之前成功的定位器路径,比较它们,并生成修复的定位器列表。如果修复成功,我们可以使用 Healenium Idea 插件更新我们的自动化测试代码:插件使用修复定位器寻找修复和更新测试代码。的旧定位器去定位按钮的时候,脚本就会报错,提示 “NoSuchElement”的错误异常。现在,我们假设开发人员变更了应用程序的UI界面,改变了这个按钮的id属性,从。 阅读详情

每一个对象都能通过 this 指针来访问自己的地址。this 指针是所有成员函数的隐含参数。因此,在成员函数内部,它可以用来指向调用对象。

注意:友元函数没有 this 指针,因为友元不是类的成员。只有成员函数才有 this 指针。

示例代码 :

#include <iostream>
using namespace std;

class Array
{
public:
    Array(int Len = 0) : Len(Len) { cout << "Array()" << endl; }
    ~Array() { cout << "~Array()" << endl; }
    void setLen(int Len) { this->Len = Len; }
    int getLen() { return Len; }
    void print() {cout << "Len = " << Len << endl;}
private:
    int Len;
};

void stackInstantiation()
{
    Array arr1(5);
    Array arr2;
    arr2.setLen(7);
    arr1.print();
    arr2.print();
}

int main()
{
    stackInstantiation();
    return 0;
}

运行结果:

  • 当参数名称与数据成员名称相同时可使用 this 指针区分。
  • 当参数名称与数据成员名称相同时可使用初始化列表,如示例代码 中 Point 类。
  • 以上两种方式可以区分参数和成员函数,但建议不要起相同的名称。

示例代码

#include <iostream>
using namespace std;

class Array
{
public:
    Array(int Len = 0) : Len(Len) { cout << "Array()" << endl; }
    ~Array() { cout << "~Array()" << endl; }
    // Array *setLen(int Len) {
    //     this->Len = Len;
    //     return this;
    // }
    Array &setLen(int Len) {
        this->Len = Len;
        return *this;
    }
    int getLen() { return Len; }
    void print() {
        cout << "Len = " << Len << endl;
    }
private:
    int Len;
};

void stackInstantiation()
{
    Array arr1(5);
    arr1.print();
    arr1.setLen(7).print();
}

int main()
{
    stackInstantiation();
    return 0;
}

运行结果:

  • 返回对象指针或者引用时的成员函数可以连续访问。
  • 引用返回 *this 而指针返回 this。

示例代码

void stackInstantiation()
{
    Array arr1(5);
    cout << "this addr: " << arr1.setLen(7) << endl;
    cout << "obj addr: " << &arr1 << endl;
    Array arr2(3);
    cout << "this addr: " << arr2.setLen(6) << endl;
    cout << "obj addr: " << &arr2 << endl;
}

运行结果:

  • this 指针就是对象本身的指针。
  • 相同类型不同对象 this 指针指向不同的对象。
40、基于指令的GPU编程:OpenACC与OpenMP的深入解析 本文深入解析了两种基于指令的GPU编程模型——OpenACC和OpenMP。从编程复杂度、数据处理方式和性能表现等多个方面对两者进行了对比分析,并结合实际应用场景提供了选择建议。通过详细的代码示例和性能测试结果,帮助开发者更好地理解和应用这两种编程模型,以充分发挥GPU的并行计算能力。 阅读详情

相关推荐

鸿蒙实战开发教程-注册登录页面

在密码输入框中,只要设置TextInput的类型就可以实现带眼睛logo的密码输入框效果:

2401_82546228的博客 3559

谈谈this指针

首先this指针是什么呢? this指针是一个指向当前对象的隐含的指针,每一个成员函数都有一个指针型参,他的名字是固定的,称为this指针(构造函数比较特殊,没有这个隐含的this指针)。 编译器会对成员函数进行处理,在对象调用成员函数时,对象地址作为实参传递给成员函数的第一个形参this指针。 this指针是成员函数隐含指针形参,是编译器自己处理的,我们不可以在成员函数的形参中添加this...

a15929748502的博客 205

Vivado 2018.3 SDK烧写bin文件避坑指南:如何解决QSPI模式下的常见错误

本文深入解析了在Vivado 2018.3 SDK中为Zynq FPGA烧写QSPI Flash时遇到的常见问题,特别是启动模式为QSPI时出现的警告与失败。文章从Zynq启动机制入手,提供了修改FSBL代码以强制使用JTAG模式、调整硬件配置等核心解决方案,并分享了实战案例与最佳实践,帮助开发者高效避坑,确保bin文件烧写成功。

arduino9maker的博客 389

this指针

this是一个指针,它时时刻刻指向你这个实例本身。你可以看到它的成员函数、成员变量,this指针本质上是“成员函数”的形参。你可以看见桌子、椅子、地板等,静态成员函数中不能使用this指针。但是房子你是看不到全貌了。对于一个类的实例来说,当你进入一个房子后,不能给this指针赋值。

m0_63783532的博客 8503

从大疆智图到Cesium:3D Tiles模型加载与Web三维场景构建实战

本文详细介绍了如何利用大疆智图生成3D Tiles数据,并通过Cesium在Web端实现高效加载与三维场景构建。从大疆智图参数设置到Cesium环境配置,再到3D Tiles性能调优与高级功能实现,提供了一套完整的实战指南,帮助开发者快速掌握3D Tiles模型加载与Web三维场景构建技术。

weixin_30520015的博客 1285

Matlab2024a安装教程

点击【下一步】。8.选择解压后的【MATLAB R2024a(64bit)】文件夹中【Crack】文件夹下的【licese.lic】,点击【打开】。

qq_64359046的博客 4828

C++中的This指针

一、This指针的介绍     C++中使用This指针来指向用来调用成员函数的对象。一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函

u012103747的专栏 2880

高德地图JS API私有化部署实战:从数据爬取到内网集成

本文详细介绍了高德地图JS API私有化部署的完整流程,涵盖从地图瓦片数据爬取、JS API离线化改造到内网项目集成的实战步骤。重点解决了在封闭内网环境中实现地图功能的核心难题,并提供了Vue.js项目中的具体集成代码与调试技巧,帮助开发者在离线环境下构建稳定可靠的地图应用。

weixin_29062255的博客 319

This 指针详解(C++版)

前言 一、this指针定义 二、this指针的特征 三、this指针面试题

qq_56674342的博客 3425

大白话讲解Numpy中什么是一维、二维、三维数组,以及5种创建方式

NumPy中提供了多种创建数组的方式,其中最基本的方式就是通过array()函数创建数组在使用该函数时直接传入列表或元组即可。 通过array()函数分别创建一维数组、二维组和三维数组,那么什么是维度呢?一维、二维、三维有什么区别? 1、什么是维度? 维度可以理解为描述数据的一种 “方向” 或者 “层次”。在数组中,维度的数量决定了我们需要用多少个索引来访问一个元素 2、一维、二维、三维的区别? (1)一维:一维数组就像是一条直线上排列的一组数据,例如: a = np.array([1, 2

1365

ROS2_IGH方案配置(二)——Ubuntu22.04 实时内核性能验证与调优

本文详细介绍了在Ubuntu22.04系统上配置ROS2_IGH方案时,如何验证和调优PREEMPT_RT实时内核性能。通过使用cyclictest工具进行基准测试和压力测试,分析中断与硬件延迟,并优化内核参数,确保系统满足工业控制领域对硬实时性的苛刻要求。文章还提供了针对ROS2的特殊优化建议和性能监控方案,帮助开发者实现毫秒级延迟的稳定控制。

weixin_30791095的博客 224

C++中this指针详解整理(通俗易懂)

指针 在建立对象时,系统会为每一个对象分配独立的存储空间,也就是给每个对象中的数据成员都分配有自己独立的存储空间。 如果对同一个类定义n个对象,则有n组同样大小的空间以存放对象中的数据成员。但对于成员函数来说,对象中的数据成员。一个函数的代码段在内存中只有一份。也就是说,函数的代码段在内存中只有一份。也就是说,同一个类中的不同对象在调用自己的成员函数时,其实它们调用的是同一段函数代码。 那么,当一个对象调用自己的成员函数时,如何才能保证成员函数中对数据成员的处理是针对自己的数据成员,而不是其他对象的数据成员

Me的博客 2249

思科 MIB 库

思科 MIB

m0_54931486的博客 770

c++中this指针的用法详解

为什么引入this指针?     最简单的应用场景就是:当我们在类中定义了一个变量,同时在类成员函数中定义了同一变量时,也就是说变量名重复时,但是我们想使用类中定义的变量,这个时候我们该怎么办呢?这个时候就是this指针大显身手的时候了。为此我们引入this指针的概念。 1. this指针的用处:   一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this...

程小二的博客 3万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

C++:this指针详解

本篇关于this指针的内容就到这里了,希望对各位有帮助,如果有错误欢迎各位指出。运行下面两串代码,会发现两个代码虽然只差了一行代码,结果却差别很大。C++实现stack代码。C实现stack代码。

2401_86551514的博客 2638

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

C++ this指针

this 指针 引言: 首先,我们都知道类的成员函数可以访问类的数据(限定符只是限定于类外的一些操作,类内的一切对于成员函数来说都是透明的),那么成员函数如何知道哪个对象的数据成员要被操作呢,原因在于每个对象都拥有一个指针:this指针,通过this指针来访问自己的地址。 注意: this指针并不是对象的一部分,this指针所占的内存大小是不会反应在sizeof操作符上的。this指针的类型取决于...

好学者的博客 6万+

【C++this指针详解】

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

小小小智_x0__0x_的博客 3011

C++ this指针详解

this指针this指针介绍成员函数的参数和成员变量重名,this区分在类的普通成员函数中返回对象本身 this指针介绍 1.this 指针是 C++实现封装的一 种机制,它将对象和该对象调用的成员函数连接在一起,在外部看来,每一个对象 都拥有自己的函数成员。每个对象用有独立的数据。每个对象共享同一个方法。this 是 C++ 中的一个关键字,也是一个 const 指针,它指向当前对象,通过它可以访问当前对象的所有成员。 成员函数的参数和成员变量重名,this区分 代码演示: #include <io

weixin_50866517的博客 7025

C++中this指针的作用以及用法详解

为什么引用this指针? 当我们在类中定义了一个变量,同时又在类成员函数中定义了同一个变量时,也就是变量名重复时,但是我们要想使用类中的定义的变量,此时就需要this指针了。 1.this指针的作用 指针存在于类的成员函数中,指向被调用函数类实例的地址。  一个对象的this指针并不是对象本身的一部分,不会影响sizeof()的结果。 this指针的作用域是在类内部,当在类的非静态成员函

深海一诺 3万+

【C++ | this指针】一文了解C++的this指针

👉本文介绍了C++的this指针,为什么需要this指针,什么是this指针,怎么使用this指针。

wkd_007的博客 1890

C++ 之this指针详解

this指针 一、this关键字 this指针 每个成员函数(包括构造和析构)都有一个this指针。 this指针指向调用对象,即可以通过this关键字访问对象成员。 //访问成员变量 this->成员名; //访问成员函数 this->函数名(); 注意: 1.this指针的类型为类类型*const(类名 *const ),为右值。 2.this指针本身不占用大小,它并不是对象的一部分,因此不会影响sizeof的结果。 3.this的作用域在类成员函数的内部。 4.this指针是类成员函数

一直努力 3191

c++中 this指针详解

this 是 c++中的一个关键字,也是一个常量指针,指向当前对象,也就是当前对象的首地址。通过this指针,可以访问当前对象的成员变量和成员函数。 【特性】 1.  this指针的类型是 类类型* const 2.  this指针并不是对象本身的一部分,不会影响sizeof的结果 3.  this的作用域在类成员函数的内部 4.  this指针是类成员函数的第一个默认隐含参数,

春风来不来的博客 4326

c++之this指针详解

1.this指针的用处: 一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问均通过this进行。...

学之知之的博客 2012

C++ 中的 this 指针详解

this。

2401_87074443的博客 2337

c++基础知识:this指针

this指针简介

qq_48335434的博客 4326

C++中this指针的用法详解

1. this指针的用处:   一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问均通过this进行。  例如,调用date.SetMonth(9) <===> SetMonth(&date, 9),t.

sun1096043012的博客 3966

C++ this指针详解(精辟)

C++ this指针详解(精辟) this 是 C++ 中的一个关键字,也是一个 const 指针,它指向当前对象,通过它可以访问当前对象的所有成员。 所谓当前对象,是指正在使用的对象。例如对于stu.show();,stu 就是当前对象,this 就指向 stu。 下面是使用 this 的一个完整示例: #include <iostream> using namespace std; class Student{ public: void setname(char *name);

ccc369639963的博客 7448
上一篇: 栈与堆对比
下一篇: ROS报错解决:[rosrun] Found the following, but they‘re either not files,[rosrun] or not executable:
程序员草帽
博客等级 码龄6年 3096粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值