重载()运算符和重载强制类型转换

// 研究了半宿。最终弄清楚了

// 写了这段測试代码能够非常好的演示效果


class CConvert
{
public:
        CConvert(){m_nValue = 10;} 

        // 重载()运算符
        int operator ()();

        // 重载int强制类型转换
       operator int();

protected:
private:
     int m_nValue;
};

 

int CConvert::operator ()()
{
    return m_nValue;
}

 

CConvert::operator int()
{
    return m_nValue;
}

 

void SetValue(int nValue)
{
    int nTest = nValue;
}


int main()
{

     CConvert convert;
     SetValue(convert);  // 调用强制类型转换重载符
     SetValue(convert()); // 调用重载之后的括号运算符
     return 0;
}