是否可以获得“this”指针的地址?

2024-03-21

我读到了this是一个右值,我们无法通过应用来获取它的地址&this.

在我的代码中,我尝试使用引用绑定this。我想知道哪种方式可以给出地址this?还是两者都错了?

到底是什么this?左值、右值、关键字还是其他什么?

void MyString::test_this() const{
    std::cout << "this: " << this << std::endl;
    const MyString * const& this_ref = this;
    std::cout << "thie_ref: " << &this_ref << std::endl;
    const MyString * const&& this_right = this;
    std::cout << "thie_right: " << &this_right << std::endl;
}

//this: 00CFFC14
//thie_ref: 00CFFB14
//thie_right: 00CFFAFC

我想知道哪一个可以给出地址this?还是两者都错了?

地址也不是this,因为 C++ 抽象机没有为其定义地址。this就好像0。你无法获取0的地址,它不是一个有存储的实体,只是一些值。那么这有什么作用呢?

int const& i = 0;

它创建一个临时对象,用 0 对其进行初始化,然后将引用绑定到它。您的代码中也会发生同样的事情。您创建对持有不同临时对象的引用value of this.

this是一个关键字,代表正在执行成员函数的对象的地址。 C++ 抽象机不要求它占用存储空间,因此它始终(逻辑上)只是一个普通值,例如 0。

不要求是有好处的this来占用存储空间。它允许通过 ABI 实现 C++,其中this在寄存器中传递(通常无法寻址的东西)。如果&this必须明确定义,即如果this必须是可寻址的,否则它将阻止实现使用寄存器来传递地址。 C++ 标准的总体目标是不将实现捆绑在一起。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以获得“this”指针的地址? 的相关文章

随机推荐

  • 如何根据Json反序列化JArray数据创建DataTable?

    我有以下 JArray 数据 我需要根据 Jarray 中的列名动态创建一个数据表 然后我需要插入数据 你能帮我做这个手术吗 pre PID 3 FirstName parveen LastName a Gender male PID 8
  • 尝试升级到 1.22 时 MediaWiki DB 连接错误

    我在共享主机服务器上安装了 MediaWiki 它的版本是 1 19 1 我正在尝试更新到 1 22 2 文档表明一步更新应该可以解决此问题 我已经在过去的更新中成功完成了几次此操作 并且正在遵循以前的注释 我建立了一个新目录 其中包含1
  • 将 .keystore 转换为 .jks 以签署 apk

    我有一个 Android 应用程序 我试图使用 quixxi com 来保护它 但它要求我再次签署该应用程序 但要做到这一点 它必须使用 jks 文件 但我的密钥库是 keystore 我在 C 中使用 Xamarin Android 和
  • 想要隐藏 Jackson 映射到 JSON 的对象的某些字段

    我有一个 User 类 我想使用 Jackson 将其映射到 JSON public class User private String name private int age private int securityCode gette
  • 如何阻止链接在 Gmail 的集成迷你浏览器中打开

    在 Android 上 当用户使用 Gmail 打开邮件并单击邮件中包含的链接时 该 URL 会在某种 迷你浏览器 中打开 顶部有一个特殊的栏 就我而言 URL 是可移植 Web 应用程序 PWA 应在 Chrome 浏览器本身中打开 使用
  • CardLayout 中的可滚动 JPanel?

    我一直在寻找一种方法来添加垂直滚动条JPanel依次添加到CardLayout控制板 我查找了这里所有与实现可滚动相关的帖子JPanel但我不知道如何用这个特定的方法来实现它CardLayout Oracle 也没有给出我可以使用的示例 也
  • sparql 主题的完整树

    例如 当我有一个人图时 例如约翰和约翰有工作地址 家庭地址 电话号码 关系等 是否有可能在不知道它是什么的情况下检索与 john 及其子类相关的所有内容 这样我就可以检索例如以下内容 John lt address lt house num
  • 为什么 ++x 是左值而 x++ 是右值? [复制]

    这个问题在这里已经有答案了 所以我一直在阅读左值和右值 我对两者之间的区别有点困惑 x and x 当谈到这个分类时 Why is x左值和x 右值 x返回对您增加的对象的引用 其中x 返回一个临时副本x的旧值 至少这将是按照惯例实现这些运
  • Android WebView Java-Javascript 桥接器

    我想知道是否可以从Java代码中获取Javascript变量值 换句话说 我在 WebView 中有 JS 代码 并且我需要能够从 WebView 的 JS 代码获取变量 是的 可以通过安装 Java JS 桥 然后将 JS 注入到收集数据
  • 非常纠结 cocoapods / ruby​​ 设置

    这工作正常 然后突然就不行了 我希望我知道为什么 真的卡住了 在网上找不到任何东西 我正在开发一个 ObjectiveC 项目 我尝试用以下方法重置一切 sudo gem uninstall ruby sudo gem uninstall
  • 实体框架花费大量时间初始化模型

    我面临 EF 花费大量时间 跨越数小时 来初始化模型的问题 该模型如下所示 大约有 20 个类从 A1 派生 大约 30 个类从 A2 派生 我必须从 TPT 战略转向 TPH 战略解决问题 https stackoverflow com
  • Swift 中的 NSExpression 计算器

    我正在尝试复制需要用Objective C写计算器 https stackoverflow com questions 15090475 need to write calculator in objective c在 Swift 中 但我
  • 使用 ArrayList 将文本文件拆分并存储到数组中

    我一直在开发一个测验应用程序 它使用文本文件来存储问题 问题的格式如下 QUESTION CHOICE A CHOICE B CHOICE C CHOICE D ANSWER 我希望它读取每一行并将其分成 6 个不同的部分 作为分割字符串并
  • 为什么这个 Flexbox 布局在 Safari 中会被破坏?

    所以我在 CSS 中设计了这个 想法是有一个标题 其余部分作为可滚动内容 有一个链接到现场演示在底部 Alas in Safari it is broken and looks like this 可以看到 表头的高度计算错误 导致绿框溢出
  • 与 React 一起使用时如何检测 keyPress 上的“Enter”键

    我正在使用 ReactJs 来开发我的应用程序 我试图通过处理 onKeyPress 事件在按下 Enter 时提交输入文本 它检测其他输入 但不输入 我尝试过不同的方法 event key event charCode event key
  • Cassandra RandomPartitioner 版本 1.2.3

    我使用 apt 在 debian 上安装 Cassandra 1 2 3 我之前使用的是 tarball 1 1 7 安装 安装后 我将 cassandra yaml 中的分区器从 Murmur3Partitioner 更改为 Random
  • Expo.FileSystem.downloadAsync 不显示下载通知

    我正在使用世博会FileSystem下载 pdf 文件 API 响应进入 success 函数 但是 我无法向用户显示下载的文件 预期的行为应该就像我们通常在状态栏上看到通知图标一样 单击图标会打开您的文件 FileSystem downl
  • DNS 服务器管理的域列表[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我们有一台运行 Ensim 的服务器 这是一个类似 Plesk 的旧工具 让我们的行为就像是一个网络主机一样 多年来 我们慢慢退出了托管业务 但我们的
  • Oracle默认的日期格式是YYYY-MM-DD,为什么?

    Oracle 的默认日期格式是 YYYY MM DD 这意味着如果我这样做 select some date from some table I lose我约会的时间部分 是的 我知道你可以通过以下方式 解决 这个问题 alter sess
  • 是否可以获得“this”指针的地址?

    我读到了this是一个右值 我们无法通过应用来获取它的地址 this 在我的代码中 我尝试使用引用绑定this 我想知道哪种方式可以给出地址this 还是两者都错了 到底是什么this 左值 右值 关键字还是其他什么 void MyStri