C++类的变换函数

来源:百度知道 编辑:UC知道 时间:2024/06/29 01:37:24
double & operator()(int iRow,int iCol)
{
return m_adValue[iRow][iCol];
}

operator double &()(int iRow,int iCol)
{
return m_adValue[iRow][iCol];
}
一样吗?
上面那个是不是变换函数?

上面那个是重载括号运算符
下面那个是变换函数的错误形式(不能有参数的)
给你一个例子吧:
#include<stdio.h>
double g_d[3][3] = {0};

class AA
{
public:
AA():m_fValue(0)
{

}
double& operator ()(int iRow,int iCol)
{
printf( "括号操作符被调用!\n" );
return g_d[iRow][iCol];
}
operator double&()
{
printf( "转换函数被调用!\n" );
return m_fValue;
}
protected:
private:
double m_fValue;
};

void outputDouble(double d)
{
printf( "outputDouble-%f\n", d);
}
int main()
{
AA a;
g_d[1][2] = 34;
double d = a(1,2);
printf( "%f\n", d);
outputDouble(a);
return 0;
}

第二个写错了,正确的如下:
operator double ()
{
return true;
}
这是个类型转换运算符。