📄 lt16.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 + -