"nullptr"是指针类型吗?如何用C++的方式把"T*"转换成"void*" | Is "nullptr" a Pointer Type? How to Convert "T*" to "void*" by C++ Way
原文中文,约4800字,阅读约需12分钟。发表于: 。nullptr是指针类型吗? nullptr是C++里预定义的一个变量,它的类型是std::nullptr_t。 判断一个类型是否是指针类型,可以用std::is_pointer来判断。 测试std::nullptr_t是否是指针类型的代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include...
nullptr是C++里预定义的一个变量,它的类型是std::nullptr_t。虽然std::nullptr_t不是指针类型,但可以转换成任意指针类型,并以0为值。std::nullptr_t有两种实现方式,一种是类类型,一种是编译器内置的非类类型。判断std::nullptr_t是否是类类型可以使用std::is_class。默认情况下,std::nullptr_t不是类类型,而是独特的类型,可以使用std::is_null_pointer来判断。nullptr是右值临时变量,无法取地址,但可以使用std::nullptr_t重新定义一个左值来取地址。将"T*"转换成"void*"可以使用C语言的强制类型转换或使用C++的类型转换方式。cv-qualified std::nullptr_t类型的变量可以直接赋值给std::nullptr_t类型的变量,但cv-qualified std::nullptr_t*类型的变量需要使用const_cast转换后才能赋值。