我查看了一些关于 nullptr 的代码,发现:
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 = {};
inline operator T*() const
和 inline operator T C::*() const
是什么意思?
它们的工作方式是否与 inline T operator *() const
或 inline T operator C::*() const
相同?
为什么不在声明中指定返回类型?
最佳答案
它们是用户定义的转换运算符函数。
一个更简单的函数:
struct Foo
{
inline operator int () const { return 0; }
};
鉴于你可以使用
Foo f;
int i = f; // Invokes f.operator int () and initializes i with
// return value.
对于你这个类,它是一个nullptr
的匿名类,它的意思是它可以转换为任何指针或成员函数指针。您可以使用:
int* ip = nullptr;
它使用第一个用户定义的转换运算符函数的返回值来初始化ip
。
struct Bar
{
void bar() {}
};
void (Bar::*ptr)() = nullptr;
它使用第二个用户定义的转换运算符函数的返回值来初始化ptr
。
关于c++ - "inline operator T*() const"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43440687/