为什么'this'关键字不是C ++中的引用类型

时间:2010-02-11 18:25:50

标签: c++ this keyword

  

可能重复:
  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。这是标准吗?

3 个答案:

答案 0 :(得分:16)

请参阅Stroustrup的Why is this not a reference

  

因为在添加引用之前,“this”被引入到C ++中(实际上是带有Classes的C语言)。另外,我选择“this”来跟随Simula的使用,而不是(后来)Smalltalk使用“self”。

答案 1 :(得分:3)

因为直到稍后才将引用添加到C ++中。到那时为时已经太晚了。

答案 2 :(得分:0)

(可能不是一个完整的答案) 当对象需要使用“危险”

删除自身时,总会出现这种情况
delete this;

所以它可能必须是一个指针。

微米。