加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 使用“this”关键字时,系统如何知道使用什么?

发布时间:2020-12-15 03:59:32 所属栏目:百科 来源:网络整理
导读:使用“this”关键字时,系统如何知道使用什么? 最近我在接受采访时被问到这个问题.从来没有想到这一点,我回答说,系统会知道当前的控制流程的上下文,并决定使用这个对象来代替.面试官不高兴,他接下来的问题. 任何人都可以告诉我面试官可能想问什么,什么是答案
使用“this”关键字时,系统如何知道使用什么?

最近我在接受采访时被问到这个问题.从来没有想到这一点,我回答说,系统会知道当前的控制流程的上下文,并决定使用这个对象来代替.面试官不高兴,他接下来的问题.

任何人都可以告诉我面试官可能想问什么,什么是答案?
(我认为这可以以不同的方式解释,因此保持为维基,除非有人指出不是..)

解决方法

this关键字是指向当前对象的指针.类的所有非静态成员函数都可以访问此指针.

指向当前对象的指针通常由编译器在非静态成员函数中通过使用寄存器(通常为ECX)使其可用.因此,当您在非静态成员函数中编写该编译器时,编译器将将该调用转换为从ECX加载地址.

检查这个简单的例子:

A t;
t.Test();
004114DE  lea         ecx,[t] 
004114E1  call        std::operator > (41125Dh) 

在调用非静态成员函数Test()之前,编译器将使用[t](变量t的地址将在测试方法内)加载寄存器ECX.

004114DE  lea         ecx,[t]

并且在函数内部可以使用ecx获取当前对象实例的地址.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读