Window :: operator HWND(){return hwnd; }

时间:2014-05-12 17:48:05

标签: c++ overloading

我确实理解如何重载运算符,但显然不完全。

有人可以解释部分的用法

WWindow::operator HWND()
{
    // This overloaded operator allows us to use HWND anyway we want
    return _hwnd;
}

对我来说?

我不明白

operator HWND(){ ... }

应该有用吗?

1 个答案:

答案 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)