【发布时间】:2014-12-18 13:13:22
【问题描述】:
我对这个指针的概念有点不清楚。 我知道 c++ 中的 this 指针是隐藏指针,它用于引用当前调用对象。但我想知道这个指针是否有数据类型,例如。诠释* p;指出 p 是一个指向整数的指针。同样这个指针指向什么? (我的意思是这个 'this' 指针在哪里声明或写入,或者它存在于哪里以及它是如何写入那里的。)
第二个问题是在 C# 的上下文中 问题是——如果它不是 C# 中的指针,那么 C# 上下文中的“this”是什么(当我尝试使用带有“this”关键字的 -> 箭头运算符时,我发现它不是 C# 中的指针)。 再说一次,C# 中 'this' 的数据类型是什么(我知道上述与 c++ 相关的问题的答案会回答它,但我想知道它在 C# 中是否不同)
P.S :我是一名业余程序员,并且处于学习阶段,因此很抱歉在提问时使用“它是如何编写的”之类的术语而不是适当的技术术语。
【问题讨论】:
-
C# 和 C++ 是不同的语言。为什么你期望它们是一样的?
-
我不希望它们是相同的。我只想知道它们是如何用两种语言实现的。抱歉,如果问题框架使我认为它们是相同的。
-
在 C++ 中考虑
this指针的最简单方法是作为一个额外的隐藏参数。想象一下,您有一个X类型的对象x,其成员函数foo接受一个int参数。当您执行x.foo(5)时,实际上就像foo有两个X*和int类型的参数,而您已经执行了foo(&x, 5)。 -
@JosephMansfield:其中棘手的部分是
this上的const限定实际上并非来自参数x,而是来自X::foo的声明。您可以在非常量对象上调用 const 方法。