我用google搜索了关键字"这个",其中大多数都提供了类似的例子。
http://www.geeksforgeeks.org/this-pointer-in-c/ http://www.tutorialspoint.com/cplusplus/cpp_this_pointer.htm
当我遇到这个时,
Token::~Token() {
if(this == nullptr) { return; }
.... }
它没有意义。什么"这"指向?如果它指向“令牌”,它是如何做到的?
答案 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