Peacalm Notes
Recent content on Peacalm Notes
马上订阅 Peacalm Notes RSS 更新: https://lishuangquan.cn/index.xml
"nullptr"是指针类型吗?如何用C++的方式把"T*"转换成"void*" | Is "nullptr" a Pointer Type? How to Convert "T*" to "void*" by C++ Way
nullptr是指针类型吗?
nullptr是C++里预定义的一个变量,它的类型是std::nullptr_t。
判断一个类型是否是指针类型,可以用std::is_pointer来判断。
测试std::nullptr_t是否是指针类型的代码如下:
|
|
输出:
|
|
可见std::nullptr_t并不是一个指针类型。
只不过我们平时常用nullptr来赋值给任意指针类型,会给人一种std::nullptr_t是指针类型的错觉。
从上例中还可以看出std::nullptr_t *等类型是指针类型,它们是指向std::nullptr_t的指针类型。
原理
std::nullptr_t不是指针类型,但是却可以转换成任意指针类型,并且以0为值。
它的一种实现方式如下:
|
|