C++11,其中有一个是新的关键字nullptr,如果我们的编译器是支持nullptr的话,那么我们应该直接使用nullptr来替代NULL的宏定义。正常使用过程中他们是完全等价的。某些编译器不支持c++11的新关键字nullptr,我们也可以模拟实现一个nullptr。
constclass nullptr_t {
public:
template<class T>
inline operator T*() const {
return 0;
}
template<class C, class T>
inline operator T C::*() const {
return 0;
}
private:
void operator&() const;
} nullptr = {};
#undef NULL
#define NULL nullptr