C++重载类型转换运算符的简单认识

C++重载类型转换运算符的简单认识

c++中提供了标准类型的相互转换,如执行语句:

n=(int)1.87;

则n=1,同样,可以进行这种类型转化运算符。这种重载运算符函数的格式如下:

operator 类型名()
{
	函数体;
}

与以前的重载运算符不同的是,类型转换运算符重载函数没有返回类型,因为“类型名”就代表了它的返回类型,而且也没有任何参数。在调用过程中要带一个对象实参。
实际上,类型转换运算符将对象转换成类型规定的类型。转换时的形式就像强制转换一样。如果没有转换运算符定义,直接用强制转换类型是不行的,因为强制转化只能对标准数据类型进行操作,对类类型的操作是没有定义的。
另外,转换运算符重载的缺点是无法定义其类对象运算符操作的真正含义,因为只能进行相应对象成员数据和一般数据变量的转换操作。

·
【经典例题】设计一个程序,用于实现人民币到美元的转换

#include<iostream>
using namespace std;
class rmb
{
	double r;				//人民币
	double rate;			//汇率
public:
	rmb(){}					//构造函数
	rmb(double x, double y)	//构造函数
	{
		r = x;
		rate = y;
	}
	operator double()		//double类型转换重载转换符
	{
		return (r / rate);
	}
	void setvalue()			//自行输入人民币与汇率
	{
		cout << "人民币:";
		cin >> r;
		cout << "汇率:";
		cin >> rate;
	}
	void disp()
	{
		cout << "人民币" << ":" << r << "元(汇率为"  << rate << ":1)";
	}
};
int main()
{
	rmb a, b(1000, 7.72);	//构造函数在主函数中初始化
	double m1, m2;
	a.setvalue();
	m1 = double(a);			//调用double类型转换符成员函数
	a.disp();
	cout << "元<=>" << m1 << "美元" << endl;
	m2 = double(b);			//调用double类型转换符成员函数
	b.disp();
	cout<< "元<=>" << m2<< "美元" << endl;
	return 0;
}

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值