this指针

2023-11-14

this定义:
this 是 C++ 中的一个关键字,也是一个 const 指针,它指向当前对象,通过它可以访问当前对象的所有成员。
例如:
void Student::setname(char *name){
this->name = name;
}
void Student::setage(int age){
this->age = age;
}
void Student::setscore(float score){
this->score = score;
}
this 虽然用在类的内部,但是只有在对象被创建以后才会给 this 赋值,并且这个赋值的过程是编译器自动完成的,不需要用户干预,用户也不能显式地给 this 赋值。
几点注意:
(1)this 是 const 指针,它的值是不能被修改的,一切企图修改该指针的操作,如赋值、递增、递减等都是不允许的;
(2)this 只能在成员函数内部使用,用在其他地方没有意义,也是非法的;
(3)只有当对象被创建后 this 才有意义,因此不能在 static 成员函数中使用。
this 到底是什么:
(1)this 实际上是成员函数的一个形参,在调用成员函数时将对象的地址作为实参传递给 this。不过 this 这个形参是隐式的,它并不出现在代码中,而是在编译阶段由编译器默默地将它添加到参数列表中;
(2)this 作为隐式形参,本质上是成员函数的局部变量,所以只能用在成员函数的内部,并且只有在通过对象调用成员函数时才给 this 赋值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

this指针 的相关文章

  • EF Core Group By 翻译支持条件总和

    听说 EF Core 2 1 将支持翻译小组 我感到非常兴奋 我下载了预览版并开始测试它 但发现我在很多地方仍然没有得到翻译分组 在下面的代码片段中 对 TotalFlagCases 的查询将阻止翻译分组工作 无论如何 我可以重写这个以便我
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • 动态加载程序集的应用程序配置

    我正在尝试将模块动态加载到我的应用程序中 但我想为每个模块指定单独的 app config 文件 假设我的主应用程序有以下 app config 设置
  • 在结构中使用 typedef 枚举并避免类型混合警告

    我正在使用 C99 我的编译器是 IAR Embedded workbench 但我认为这个问题对于其他一些编译器也有效 我有一个 typedef 枚举 其中包含一些项目 并且我向该新类型的结构添加了一个元素 typedef enum fo
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • 关于 C++ 转换:参数 1 从“[some_class]”到“[some_class]&”没有已知的转换

    我正在研究 C 并且遇到了一个错误 我不知道确切的原因 我已经找到了解决方案 但仍然想知道原因 class Base public void something Base b int main Base b b something Base
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • 使用 WebClient 时出现 System.Net.WebException:无法创建 SSL/TLS 安全通道

    当我执行以下代码时 System Net ServicePointManager ServerCertificateValidationCallback sender certificate chain errors gt return t
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • 八十三.0~1间的浮点实数的二进制表示 (位运算)

    给定一个介于0和1之间的实数 如0 625 类型为double 打印它的二进制表示 0 101 如果该数字无法精确地用32位以内的二进制表示 则打印 ERROR import java util Scanner public class L
  • 需求变化频繁的情况下,如何实施自动化测试

    一 通常来说 具备以下3个主要条件才能开展自动化测试工作 1 需求变动不频繁 自动化测试脚本变化的频率决定了自动化测试的维护成本 如果需求变动过于频繁 那么测试人员就需要根据变动的需求来不断地更新自动化测试用例 从而适应新的功能 而脚本的维
  • 论:单链表

    醉里挑灯看剑 梦回吹角连营 前言 本篇总结对于单链表的基本操作 创建 插入 删除 索引 用 语言实现 加深对于单链表的使用 目录 定义链表结构 节点的建立 头节点的建立 插入新的节点 从链表头插入节点 从链表尾部插入 从指定位置插入 删除节
  • Spring Boot的自动配置原理

    一 原理解释 Spring Boot的自动配置是Spring框架的一个重要特性 它旨在简化应用程序的开发和部署过程 自动配置通过基于类路径中的依赖关系和配置文件内容来预先配置Spring应用程序的各种组件和功能 这样 我们可以在无需显式配置
  • 【华为上机真题】工号不够用咋办

    作者 Linux猿 简介 CSDN博客专家 华为云享专家 Linux C C 云计算 物联网 面试 刷题 算法尽管咨询我 关注我 有问题私聊 关注专栏 数据结构和算法成神路 精讲 优质好文持续更新中 欢迎小伙伴们点赞 收藏 留言 目录 一
  • android适配分辨率(hdpi,mdpi,ldpi)及横竖屏

    http jianxiaza blog 163 com blog static 87685628201131471635563 MUST HAVE ROOT ACCESS Open Root Explorer Open System fol
  • 《深入理解Java虚拟机 1》Java内存区域与内存分配策略

    本系列是用来记录 深入理解Java虚拟机 这本书的读书笔记 方便自己查看 也方便大家查阅 欲速则不达 欲达则欲速 第一章 走进Java 一 Java虚拟机发展史 这部分一带而过吧 有兴趣的可以阅读原著 二 Java内存管理 class文件结
  • Linux(CentOS7)下rpm方式安装SNMP服务

    一 准备文件 安装snmp服务需要的rpm包 perl Data Dumper 2 145 3 el7 x86 64 rpm net snmp libs 5 7 2 28 el7 4 1 x86 64 rpm net snmp utils
  • 华为od机考真题-数大雁,1419,数青蛙

    数大雁 https leetcode cn problems minimum number of frogs croaking submissions 怎么确认最少的个数呢 我们找到第一个q和第一个k的下表 在这个范围存在q的数量且q可以在
  • 最全的ASCII码对照表

    十进制代码 十六进制代码 MCS 字符或缩写 DEC 多国字符名 ASCII 控制字符 1 0 0 NUL 空字符 1 1 SOH 标题起始 Ctrl A 2 2 STX 文本起始 Ctrl B 3 3 ETX 文本结束 Ctrl C 4
  • 考研笔记:有关双端队列知识点的探究

    考研笔记 有关双端队列知识点的探究 双端队列是指允许两端都可以进行入队和出队操作的队列 其元素的逻辑结构仍是线性结构 将队列的两端分别称为前端和后端 在双端队列进队时 前端进的元素排在后端进的元素前面 后端进的元素排在前端进的元素的后面 在
  • (四)Loadrunner 代理录制

    1 代理录制主要是为了解决浏览器兼容性问题导致的脚本录制问题 包括录制时浏览器打不开 录制脚本为空 2 代理录制主要步骤为 lr录制选项设置代理 lr录制选择代理的exe 开启浏览器代理 代理的端口号跟loadrunner里设置的代理端口号
  • xp系统怎样安装传真服务器,如何安装windows xp传真服务器

    用XP系统接收传真 1 开始 设置 打印机和传真机 本机必须安装调制解调器 必须有电话线与之连接 2 在空白处单击右键 安装一个本地传真机打印机 如果是第一次安装 则需要选择传真设置 如果本机没有安装传真服务 需要xp的安装盘加载一些文件
  • Oracle的一些常用函数

    SQL中的单记录函数 1 ASCII 返回与指定的字符对应的十进制数 SQL gt select ascii A A ascii a a ascii 0 zero ascii space from dual A A ZERO SPACE 6
  • MySQL~DCL

    三 DCL 1 SQL分类 DDL 操作数据库和表 DML 增删改表中数据 DQL 查询表中数据 DCL 管理用户 授权 DBA 数据库管理员 DCL 管理用户 授权 2 管理用户 2 1 添加用户 语法 CREATE USER 用户名 主
  • [ Z-Stack协议分析(一)] ZMain.c函数

    Z Stack协议分析 一 main函数解析 1 Z stack的简单介绍 Z stack是一个协议栈 是由美国TI公司德州仪器公司设计的 Z Stack协议可在官网下载 我用的还是老版本 ZStack CC2530 2 3 0 1 4 0
  • 网易校园招聘c++题目--如何让new操作符不分配内存,只调用构造函数

    问题 c 中的new操作符 通常完成两个工作 分配内存及调用相应的构造函数 请问 1 如何让new操作符不分配内存 只调用构造函数 2 这样的用法有什么用 解答 要求new显式调用构造函数 但不分配内存 题目要求不能生成内存 还要调用构造函
  • random、range和len函数的使用

    random range和len函数的使用 一 random函数 1 random random 和random Random import random num random random 生成0 1的随机浮点数0 61612881836
  • douyin23.9 deviceid和iid设备注册分析

    使用23 9版本进行注册 版本多少 其实没有那么重要 老生常谈 老规矩注册接口device register不能少吧 然后要检测设备app alert check吧 之后要发app log日志包吧 当然除了只有这些接口肯定是不行啦 加密用到
  • this指针

    this定义 this 是 C 中的一个关键字 也是一个 const 指针 它指向当前对象 通过它可以访问当前对象的所有成员 例如 void Student setname char name this gt name name void