声明后,指向int的指针不是NULL,而指向class的指针是NULL。
int *pint;
MyClass *Myob;
if (pint){
cout << "pint is not null";
}
if (!Myob){
cout << "Myob is null";
}
为什么没有指向内置类型和指向类的指针的行为方式相同?
答案 0 :(得分:3)
不,指向内置类和类类型的指针都有不确定的值,会导致未定义的行为。在C或C ++中,如果你写
int a;
或
int *b;
MyClass *c;
然后a,b,c将具有不确定的值(或垃圾值)。如果您想将它们初始化为nullptr
,那么您可以声明它们static
(不是一种好方法)或将它们显式初始化为int a = 10
或int *b = nullptr
。
您应该始终初始化指向NULL
或nullptr
的指针(如果您的编译器支持C ++ 11,则为指针指定NULL为deprecated)。