指向类的指针与指向内置类型的指针

时间:2016-06-05 03:34:28

标签: c++

声明后,指向int的指针不是NULL,而指向class的指针是NULL。

int *pint;
MyClass *Myob;
if (pint){
    cout << "pint is not null";
}
if (!Myob){
    cout << "Myob is null";
}

为什么没有指向内置类型和指向类的指针的行为方式相同?

1 个答案:

答案 0 :(得分:3)

不,指向内置类和类类型的指针都有不确定的值,会导致未定义的行为。在C或C ++中,如果你写

int a;

int *b;
MyClass *c;

然后a,b,c将具有不确定的值(或垃圾值)。如果您想将它们初始化为nullptr,那么您可以声明它们static(不是一种好方法)或将它们显式初始化为int a = 10int *b = nullptr

您应该始终初始化指向NULLnullptr的指针(如果您的编译器支持C ++ 11,则为指针指定NULL为deprecated)。