c++中的NULL和nullptr

由于NULL的二义性,在c++11中,出现了nullptr。所以在今后写代码的时候,空指针尽量用nullptr表示吧,原因如下:

#include 
using namespace std;

void test(int a){
    cout<<"int"<

本来我们是想传递一个空指针到test函数中,但是test有两个重载函数,而在c++中NULL本质上就是0,所以运行该程序发现打印结果如下:

也就是出现了二义性。但在执行如下代码时:

#include 
using namespace std;

void test(int a){
    cout<<"int"<

打印结果为:

完美解决了这个问题。

至于nullptr的模拟实现,代码copy至:   http://www.cnblogs.com/porter/p/3611718.html

const
class nullptr_t
{
public:
    template
    inline operator T*() const
        { return 0; }

    template
    inline operator T C::*() const
        { return 0; }
 
private:
    void operator&() const;
} nullptr = {};

 

你可能感兴趣的:(c++)