⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lt16.cpp

📁 一、教学目的: 能理解C++中运算符重载的需要性
💻 CPP
字号:
#include<iostream.h>
#include<iomanip.h>
class RMB
{
public:
	RMB(double v=0.0)
	{
		yuan=v;//yuan得到V的整数部分
		jf=(v-yuan)*100.0+0.5;
	}
	operator double()
	{return yuan+jf/100.0;
	}
	void display(ostream& out)
	{
		out<<yuan<<'.'
			<<setfill('0')<<setw(2)<<jf//如:8分显示08
			<<setfill(' ');
	}
protected:
	unsigned int yuan;
	unsigned int jf;
};
ostream& operator<<(ostream& oo,RMB& d)
{
	d.display(oo);
	return oo;
}/*插入运算符不能是成员函数,也就不能成为虚函数,因此对
于上节中的重载插入运算符定义,在下例的派生类中,显得无
能为力:*/
class DerivedRMB:public RMB
{
public:
	DerivedRMB(double v,int n):RMB(v),c(n){}
protected:
	int c;
};
DerivedRMB a(5.2,3);
void fn()
{
	cout<<a;//a.c将不能显示
}
void main()
{
	fn();
}
/*cout<<a;能匹配重载的插入运算符,但是执行的结果是输出
a的人民币值而不能输出a作为派生的附加信息a,c.
解决方法:在重载插入运算符中,不直接实现输出,而是调用
display()的不同而不同。这就是上一节为什么要间接实现重载
插入运算符的用意。*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -