operator类型转换函数

    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;
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值