失乐园豆瓣评分:大虾们,帮帮忙啊!类模板问题
来源:百度文库 编辑:查人人中国名人网 时间:2024/05/05 09:25:40
(1)创建一个类模板Money,有三个私有变量:yuan,jiao,fen(变量类型可变)全部成员函数的定义都定义在类外
(2)用友元函数重载“+”,让它可以完成两个Money对象的相加,形参必须用引用
(3)用成员函数重载“++”,完成Money对象的私有变量的自增
采纳后有重谢!多谢了!!!!!!!
可以这样写(main( ) 里示范了调用):
#include<iostream>
#include<string>
using namespace std;
template<class UnitType>
class Money {
UnitType yuan, jiao, fen;
public:
Money( UnitType yuan, UnitType jiao, UnitType fen )
: yuan( yuan ), jiao( jiao ), fen( fen ) { }
// 友元函数重载“+”
friend Money<UnitType> operator+( const Money& l, const Money& r ) {
return Money<UnitType>( l.yuan + r.yuan, l.jiao + r.jiao, l.fen + r.fen );
}
// 成员函数重载“++”
Money& operator++( ); // 前缀
Money operator++( int ); // 后缀
// 方便示范
friend ostream& operator<<( ostream& os, const Money& m ) {
return os << m.yuan << "元" << m.jiao << "角" << m.fen << "分" << endl;
}
};
// 全部成员函数的定义都定义在类外
template<class T>
Money<T>& Money<T>::operator++( ) {
fen++;
return *this;
}
template<class T>
Money<T> Money<T>::operator++( int ) {
Money<T> m( *this );
operator++( ); // 利用前缀自增(以便修改自增的定义时只需修改前缀)
return m;
}
void main( ) {
Money<int> mi( 1, 2, 3 );
cout << mi;
cout << ++mi;
cout << mi++;
cout << mi << endl;
Money<int> mi2( 9, 7, 21 );
cout << mi + mi2 << endl;
// 私有变量类型可变
Money<double> mf( 3.1, 2.6, 99.9 );
cout << ++mf;
}
C++???