C++ 海关;nullptr";,但是如何理解代码呢?
它来自维基百科,如果我们的编译器不支持c++11,我们可以自己实现,如下所示:C++ 海关;nullptr";,但是如何理解代码呢?,c++,c++11,templates,nullptr,C++,C++11,Templates,Nullptr,它来自维基百科,如果我们的编译器不支持c++11,我们可以自己实现,如下所示: const class nullptr_t { public: template<class T> inline operator T*() const { return 0; } template<class C, class T> inline operator T C::*() const { return 0; } p
const class 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 = {};
const类nullptr\t
{
公众:
模板
内联运算符T*()常量
{返回0;}
模板
内联运算符tc::*()常量
{返回0;}
私人:
void运算符&()常量;
}nullptr={};
我不能理解上面的代码
----------------------更新------------------
对不起,我没说清楚
template<class T>
inline operator T*() const
{ return 0; }
template<class C, class T>
inline operator T C::*() const
{ return 0; }
模板
内联运算符T*()常量
{返回0;}
模板
内联运算符tc::*()常量
{返回0;}
以上代码,我不懂语法。
我以前从未见过这种模板表单(如“运算符tc::*()”)
表示类型为nullptr\u t
的对象可以转换为指向任何类型(模板参数t
)的任何类(模板参数C
)的非静态成员的指针
这两个运算符都是常量,因此无法更改nullptr\t
对象
表示类型为nullptr\u t
的对象可以转换为指向任何类型(模板参数t
)的任何类(模板参数C
)的非静态成员的指针
这两个运算符都是常量,因此无法更改
nullptr\t
对象 您不了解哪一部分?代码正在定义一个名为nullptr
的const
变量,类型为nullptr\t
。这两个隐式转换运算符允许nullptr
可以在任何可以使用指针的地方使用。您不了解什么部分?代码正在定义一个名为nullptr
的const
变量,类型为nullptr\t
。这两个隐式转换运算符允许nullptr
在任何可以使用指针的地方使用。
template<class T>
inline operator T*() const
{ return 0; }
template<class C, class T>
inline operator T C::*() const
{ return 0; }