【发布时间】:2011-01-15 20:13:09
【问题描述】:
可能的重复:
Why ‘this’ is a pointer and not a reference?
SAFE Pointer to a pointer (well reference to a reference) in C#
C++ 中的this 关键字获取指向我当前对象的指针。
我的问题是为什么this 的类型是指针类型而不是引用类型。
是否存在this 关键字为NULL 的任何条件?
我的直接想法是使用静态函数,但 Visual C++ 至少足够聪明,可以发现这一点并报告static member functions do not have 'this' pointers。这在标准中吗?
【问题讨论】:
-
不完全重复!另一个问题没有解决这里提出的次要问题,例如“
this可以为空吗?”。当这个问题结束时,我正在回答这个问题。 -
关于
this是否可以为空的问题,答案是否定的,不是在一个格式良好的程序中。 -
在实践中,null
this会发生。如果您有一个指向对象的指针,并且该指针为空,并且您尝试调用一个方法(例如,p->method()),那么您经常会在该方法中崩溃,因为this是NULL。我确信编译器会有所不同。但this在正确的程序中永远不会为空。