运算符重载 - C++

3
class sock  {
public:
    SOCKET m_hSock;
.....
//Other functons...contructors, destructors
.....
    operator SOCKET()
        { return m_hSock;}

}

在上述socket类代码中,它重载了哪个运算符?

http://www.learncpp.com/cpp-tutorial/910-overloading-typecasts/ - iDebD_gh
1个回答

5
这被称为类型转换运算符。形式为的运算符;
operator Type()

其中Type是所需类型,通常被称为强制转换运算符,可以用于强制转换操作,如static_cast<Type>(obj)


  • 并且它可以用于隐式转换
- ikh
@ikh 是的。在C++11中,运算符可以标记为“explicit”,这样就不允许发生这种情况。这并不意味着对象的隐式或显式构造被强制转换。 - Niall
@Nipun,就我个人而言,没有太多。首先想到的是API兼容性,正如OP所述;当您需要将类型转换为另一种类型而不改变要转换的类型时,可以使用它。 - Niall

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接