失乐园豆瓣评分:大虾们,帮帮忙啊!类模板问题

来源:百度文库 编辑:查人人中国名人网 时间: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++???