"这"关键字,这是什么意思?

时间:2015-12-01 03:50:04

标签: c++ coding-style this

我用google搜索了关键字"这个",其中大多数都提供了类似的例子。

http://www.geeksforgeeks.org/this-pointer-in-c/ http://www.tutorialspoint.com/cplusplus/cpp_this_pointer.htm

当我遇到这个时,

Token::~Token() {
if(this == nullptr) { return; }
.... }

它没有意义。什么"这"指向?如果它指向“令牌”,它是如何做到的?

2 个答案:

答案 0 :(得分:3)

this只是指向函数所属类的当前对象的指针。它更像是一个传递给c ++类的每个NON-STATIC方法的隐藏参数。它只是指向一个类的特定实例以及该对象具有的所有数据。所以对你的例子来说:

Token::~Token() {
if(this == nullptr) { return; }
.... }

This只是指向令牌类的对象'析构函数。

if(this == nullptr) { return; }

更具体地说,上面的if语句是查看对象的实例是否等于空引用。

答案 1 :(得分:2)

不建议在c ++中使用this检查NULL。在对类的NULL指针调用方法时,this可能为NULL。一个例子:

Token* token = nullptr;
token->~Token();

代码确实应该首先检查令牌是否为NULL,而不是在析构函数中检查NULL。

Token* token = nullptr;
if (token)
  token->~Token();

此链接说明了您的问题:http://www.viva64.com/en/b/0226/

Google和Foxit如何在pdfium中修复此问题:

https://bugs.chromium.org/p/pdfium/issues/detail?id=4 https://groups.google.com/forum/#!topic/pdfium/8mTxtmle4ok