简单的模板实例,实现简单的运算符重载
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 ;
}
//
#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 ;
}
相关文章推荐
- C++11:模板实现opencl向量类型(cl_intn,cl_floatn...)的简单运算符(+,-)重载及length,distance函数
- shell编程实例三实现简单运算符
- c++模板重载之字符串模板库的简单实现
- PHP简单模板实现实例
- javascript:从 复选框来选中俩个数值,然后从单选框按钮来选择加减乘除运算符,实现简单的计算器.
- spring 框架中的依赖注入(IOC--设值注入)---使用xml简单配置文件---的具体实例的简单实现
- java简单实现多线程及线程池实例详解
- PHP实现简单的万年历(实例)
- JS利用正则表达式实现简单的密码强弱判断实例
- 第十八章 33用重载输出运算符函数实现字符串的输出
- XML与ASP简单结合实现HTML模板功能
- Delphi 用DLL实现插件的简单实例
- Java 实现随机验证码功能简单实例
- 一个简单的jsp+servlet实例,实现简单的登录
- C实例---实现一个简单的正则表达式(删除重复的字符)
- jquery实现简单的拖拽效果实例兼容所有主流浏览器
- jQuery实现动画效果的简单实例
- Eclipse下mahout实现推荐的简单实例
- PHP+AJAX实现简单验证码程序实例
- jquery实现简单的拖拽效果实例兼容所有主流浏览器(优化篇)