我确实理解如何重载运算符,但显然不完全。
有人可以解释部分的用法
WWindow::operator HWND()
{
// This overloaded operator allows us to use HWND anyway we want
return _hwnd;
}
对我来说?
我不明白
operator HWND(){ ... }
应该有用吗?
答案 0 :(得分:6)
这是一个自动转换运算符。一般原型是:
operator TYPE();
即没有返回类型,因为它必须与您要转换的类型相同。
只要您使用需要WWindow
的原始对象(类型HWND
),就会调用此运算符。
请注意,制作转化运算符const
通常最好:
operator HWND() const { ... }
但这取决于你想要它与它完全一致。
此外,如果您使用C ++ 11,则可以将它们声明为显式:
explicit operator HWND() const { ... }
因此不会在任意上下文中自动调用它,而只会在少数更安全的情况下调用,例如使用static_cast<HWND>(w)
或HWND h(w)
,而不是DestroyWindow(w)
。