type conversion operator可以将类类型转换成基本数据类型或者是其他的类类型,其具有以下特点:
1、此函数式inline函数,定义在类的声明中;
2、形式如下:
class <类型说明符1>
{
public:
operator <类型说明符2>();
…
}
将1转换成2
3、没有参数,返回目标类型数据或调用目标类的构造函数
给个例子:
class Complex
{
public:
Complex();
Complex(double dReal,double dImag);
operator double();
private:
double m_dReal;
double m_dImag;
};
Complex::Complex()
{
m_dReal = 0;
m_dImag = 0;
}
Complex::Complex(double dReal,double dImag)
{
m_dReal = dReal;
m_dImag = dImag;
}
Complex::operator double()
{
return m_dReal;
}
int main()
{
Complex obj(3,4);
double dNum = 0.0;
dNum = 2.5 + obj;
cout<<"dNum="<<dNum;
system("pause");
return 0;
}
结果是:5.5
在More Effective C++的Item 5中使用过operator double() const; 这将导致隐式类型转换,这在C++中是应该尽量避免的。
但是在深度探索C++对象模型中,为了实现C与C++的兼容,则:
struct C_point{...}
class Point{
public:
operator C_point(){return c_point;}
private:
C_point c_point;
};