我目前正在研究一些看起来很奇怪的第三方C++代码(我从C++ 11开始)。其中一个给我留下了很多东西疑惑,是static_cast
从NULL
在许多情况下某些指针类型:在C++中将SomeType *转换为NULL有什么用?
SomeClass* someClassPtr = static_cast<SomeClass*>(NULL);
我知道你可以施放例如指针从基类指针转换为派生类指针,但这里绝对没有继承。据我所看到的,这已经足够了:
SomeClass* someClassPtr = NULL;
但在这个代码,其中NULL
没有得到浇铸为特定的指针类型的唯一案例,在载体和其他容器指针:
SomeOtherClass.vecOfSomeClassPtr[i] = NULL;
所以我的问题是:
- 这是简单的旧式(甚至C-样式)代码之前有
nullptr
? - 是否/正在铸造
NULL
其他事情需要比使用继承时的down/upcasting? - 或者我完全错过了什么?
而如果我没有得到它错了到目前为止:
我先被替换的static_cast<type*>(NULL)
所有实例NULL
后来nullptr
,看是否会破坏任何东西:不。 编译器不会抗议,程序似乎仍然按预期工作。 但我知道指针可能会非常棘手的小混蛋,于是:
- 有关使用
nullptr
什么陷阱没有我可能会错过?
PS:是的,我确实使用了搜索,是的,我在C代码上找到了类似的问题。 但这是C++代码,我很想知道,而不是仅仅假设某件事。
在一个问题中你有很多问题。 – user2079303
我会牢记未来。 – Floriel