我正在阅读这个问题的答案C++的优点和缺点,并在阅读评论时得到了这个疑问.
程序员经常发现令人困惑的是"this"是指针而不是引用.另一个困惑是为什么"hello"不是std :: string类型但是求值为char const*(指针)(在数组到指针转换之后) - Johannes Schaub - litb于2008年12月22日在1:56
这只表明它没有使用与其他(后来的)语言相同的约定. - le dorfier 2008年12月22日3:35
我称之为"这个"的事情虽然是一个非常微不足道的问题.还有哎呀,感谢我在未定义行为的示例中捕获了一些错误.:)虽然我不明白大小的信息与第一个中的任何东西有关.根本不允许指针指向已分配的内存 - jalf 08年12月22日4:18
这是一个不变的人吗? - yesraaj 08年12月22日6:35
如果方法是const int getFoo()const,这可以是常量; < - 在getFoo的范围内,"this"是常量,因此是readonly.这可以防止错误并为调用者提供某种程度的保证,即对象不会更改. - 道格T. 2008年12月22日16:42
你不能重新分配"这个".即你不能做"this =&other;",因为这是一个右值.但这是T*类型,而不是T const类型.即它是一个非常量指针.如果你在const方法中,那么它是一个指向const的指针.T const.但是指针本身是无关紧要的 - 约翰内斯·绍布 - 在2008年12月22日17:53
想到这个"this":#define this(this_ + 0),编译器将"this_"创建为指向对象的指针,并使"this"成为关键字.你不能指定"this"因为(this_ + 0)是一个右值.当然那不是它的原因(没有这样的宏),但它可以帮助理解它 - Johannes Schaub - litb 2008年12月22日17:55
我的问题是,为什么this指针不是引用?使它成为指针的任何特殊原因?
为什么this作为参考的一些进一步的论点是有道理的:
Item 1来自More Effective C++:当保证我们有一个有效的对象,即不是NULL(我的解释)时,使用引用..)的语法比访问指针(->或(*))更好,更短.__consuming在Sequence.swift中有一些函数(很可能是其他地方,但我还没有真正环顾四周).我知道它是某种类型的声明修饰符,但我不确定它是做什么的.