operator HANDLE () { return _handle; }怎么理解

operator HANDLE () { return _handle; }如何理解?

class Event{
  operator HANDLE () { return _handle; }//如何理解?
private:
  HANDLE _handle;
};

主要是:
operator HANDLE () 

是运算符重载吗?

如此重载后,程序中如何使用?

------解决方案--------------------
隐式类型转换。
CBitmap,CDC...等MFC都有这种转换,某种程度上提供一定便利。
参见more effective C++中某条款之利弊。

------解决方案--------------------


C/C++ code

Event evt;
HANDLE h = evt;
printf("%d", (HANDLE)evt)

------解决方案--------------------
自动类型转换
假设你有一个class A,现在你有一个实例a=A()
在某些时候,你希望a能自动变动布尔型,那在类A里就应该这样:
class A
{
public:
operator bool () const { return true/false accordingly; }
}

其它类型同理
------解决方案--------------------
这就是一种类型转换,
如果楼主你使用过CString,你就会发现CString对象可以传入LPCTSTR为参数的函数中.

比如有个函数是这样的: OpenFile(LPCTSTR strFileName);
你会发现可以直接传入CString对象进去.
比如: 
CString strName=TEXT("c:\\a.txt");
直接使用;
OpenFile(strName);这样就可以.而不需要把CString先转换成TCHAR buf[];

这就是因为CString有这个operator TCHAR*()的方法.


可以再举个简单例子:
比如有函数: 
int addOne(int a)
{
a++;
return a;
}

class Int
{
public:
int m_val;
};

哪果没有 operator int(){return m_val;}

Int val;
你调用 addOne的时候就得 
addOne(val.m_val);

如果有了operator int(){return m_val;}
你就可以直接这样调用函数: 
addOne(val);