3 回答
TA贡献1963条经验 获得超6个赞
当该语言第一次发展时,在具有实际用户的早期版本中,没有引用,只有指针。添加操作员重载时添加了引用,因为它需要引用才能一致地工作。
的用途之一this
是使对象获得指向自身的指针。如果是参考,我们必须写&this
。另一方面,当我们编写一个赋值运算符时,我们必须这样做return *this
,它看起来更简单return this
。因此,如果您的菜板空白,则可以选择其中任何一种方式。但是C ++逐渐发展以响应用户社区的反馈(例如最成功的事物)。向后兼容性的价值完全压倒了由于this
作为参考或指针而产生的次要优点/缺点。
TA贡献1891条经验 获得超3个赞
派对晚了一点…… Bjarne Stroustrup直言不讳,直言不讳(这在《 C ++设计与演变》一书中是重复的,或摘自该书):
为什么“ this”不是参考?
因为在添加引用之前,“ this”已引入C ++(实际上是带有类的C)。另外,我选择“ this”来遵循Simula的用法,而不是(后来的)Smalltalk对“ self”的用法。
TA贡献1796条经验 获得超4个赞
C ++标准指出
9.3.2 / 1
在非静态(9.3)成员函数的主体中,关键字this是一个非左值表达式,其值是为其调用该函数的对象的地址。在类X的成员函数中,此类型为X *。如果将成员函数声明为const,则其类型为const X *;如果将成员函数声明为volatile,则其类型为volatile X *;如果将成员函数声明为const volatile,则其类型为const。易失X *。
但是在其他参考文献中,发现了其他东西。于是有人主动出击并给斯特劳斯特鲁普先生发了邮件。随后的对话可以在这里找到。
- 3 回答
- 0 关注
- 423 浏览
添加回答
举报