C ++ / CLI如何判断句柄是否指向任何对象

时间:2015-06-19 23:13:22

标签: pointers visual-c++ c++-cli

在普通的c ++中,有些指针如果没有指向任何对象,则用NULL表示。

class* object1 = NULL; //NULL is a special value that indicates
                       //that the pointer is not pointing to any object.

if(object1  == NULL) {
    cout << "the pointer is not pointing to any object" << endl;
}
else {
    cout << "the pointer is pointing to any object" << endl;
} 

那么使用C ++ / CLI Handles会有什么样子呢? 我在互联网上找到了这个。有人可以告诉我,我是否正确吗?

class^ object2 = nullptr;
if(object2 == nullptr){
    cout << "the pointer is not pointing to any object" << endl;
}
else {
    cout << "the pointer is pointing to any object" << endl;
}

1 个答案:

答案 0 :(得分:1)

您不应在C ++中使用jquery.matchHeight.js。选择NULL

考虑一下:

nullptr

因为我们人类将void some_function(some_class* test); void some_function(int test); int main() { some_function(NULL); } 解释为指针&#34;类型,&#34;程序员可能期望调用第一个重载。但是NULL通常被定义为整数NULL - 因此编译器会选择第二个。如果你了解发生了什么,这不是一个问题,但它并不是非常直观。

此外,0 是有效的内存地址。在桌面编程中,我们通常不会将数据分配到地址0,但它可能在某些其他环境中有效。那么我们可以做些什么来检查0的分配?

为了消除歧义,C ++提供了一个明确的0。它不是一个整数,它有自己的特殊类型,不能被误解:这个指针有一个强类型的值。