您的位置:首页 > 其它

简单的模板实例,实现简单的运算符重载

2007-01-17 22:58 791 查看
// CTemp.cpp : Defines the entry point for the console application.


//


#include " stdafx.h "


#include < iostream >


using namespace std;


template < class T1 , class T2 >


class CTemp






{


public :


// constructor of no arguments


CTemp()






{


// m_t1=0;


// m_t2=0;


} ;


// constructor of arguments


CTemp(T1 t1,T2 t2)






{


m_t1 = t1;


m_t2 = t2;


} ;


// the copy constructor


CTemp( const CTemp & value)






{


m_t1 = value.m_t1;


m_t2 = value.m_t2;


}


// the deconstructor




~ CTemp()

{ } ;


// overloading operator +, it can a CTemp class add a int variable


CTemp operator + ( const int & temp );


// overloading operator +, it can add two CTemp object


CTemp operator + ( const CTemp & temp );


// overloading operator +, it can a CTemp class subtract a int variable


CTemp operator - ( const int & temp );


// overloading operator=,it can reliaze assigment


CTemp & operator = (CTemp < T1,T2 > & temp5 );


void OutPutmt1();


private :


T1 m_t1;


T2 m_t2;


} ;


template < class T1, class T2 >


CTemp < T1,T2 > CTemp < T1,T2 > :: operator + ( const int & temp)






{


CTemp < T1,T2 > results1( 0 , 0 );


results1.m_t1 = results1.m_t1 + temp + m_t1;


return results1;


}


template < class T1, class T2 >


CTemp < T1,T2 > CTemp < T1,T2 > :: operator - ( const int & temp)






{


CTemp < T1,T2 > results;


results.m_t1 = results.m_t1 - temp;


return results;


}


template < class T1, class T2 >


CTemp < T1,T2 > & CTemp < T1,T2 > :: operator = (CTemp < T1,T2 > & temp5)






{


m_t1 = temp5.m_t1;


m_t2 = temp5.m_t2;


return * this ;


}


template < class T1, class T2 >


void CTemp < T1,T2 > ::OutPutmt1()






{


cout << m_t1 << endl;


}


template < class T1, class T2 >


CTemp < T1,T2 > CTemp < T1,T2 > :: operator + ( const CTemp < T1,T2 > & temp )






{


CTemp < T1,T2 > results1( 0 , 0 );


results1.m_t1 = results1.m_t1 + temp.m_t1 + m_t1;


results1.m_t2 = results1.m_t2 + temp.m_t2 + m_t2;


return results1;


}


// the return is class T1


template < class T1, class T2 >


T1 Add(T1 t1,T2 t2)






{


T1 temp = t1;


t1 = t1 + t2;


T1 result = t1;


t1 = temp;


return result;


}


int _tmain( int argc, _TCHAR * argv[])






{




CTemp < int , int > A( 10 , 20 );


CTemp < int , int > B( 30 , 30 );


CTemp < int , int > C(A);


B = A;


A = (A + 50 );


A.OutPutmt1();


B.OutPutmt1();


C.OutPutmt1();


CTemp < char , char > D( ' a ' , ' b ' );


D = D + 2 ;


D.OutPutmt1();


CTemp < int , int > E( 0 , 0 );


E = Add(A, 20 );


E.OutPutmt1();


CTemp < char , char > F( ' A ' , ' b ' );


CTemp < char , char > G( ' 1 ' , ' b ' );


F = F + G;


F.OutPutmt1();


return 0 ;


}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: