洛阳理工学院实验报告
系别计算机与信息工程系课程名称实验名称C面向对象程序设计运算符重载和类模板实验日期成绩2013115班级B110学号B11050姓名
实验目的:1、掌握C中运算符重载的机制和运算符重载的方式;2、掌握类型转换的方式、内存的动态分配;3、掌握类模板的定义,掌握类模板的实例化。
实验条件:装有MicrosoftVisualC60软件的计算机
实验内容:一、实验原理1.运算符重载成员函数方式:单目(返回类型类名∷operator单目运算符)双目(返回类型类名∷operator双目运算符类名引用)下标运算符重载:类型类名∷operator(下标类型形参)函数体提取符重载:预定义插入符ostreamostream∷operatortypeobj;预定义提取符istreamistream∷operatortypeobj;运算符重载规则:(1)不可以重载非C的运算符;(2)运算符重载可以采用成员函数方式或友元方式;(3)被重载的运算符必须保持预定义的的优先级与结合性;(4)应尽量使重载的运算符语义自然、好理解;(5)注意各运算符之间的联系。
f2.类模板:templateclassTypeclass类名;(1)每一个类模板的成员函数的外部定义,都与一般函数模板的定义一样,必须以类型形参开始,此外还应加以函数返回值类型、类范围、函数名、形参序列,类名后面必须加上类型形参。(2)类模板是类的抽象类型,它的实例化是生成一个具体的类。二、实验步骤1.分析教程“函数模板”中的例子,自行设计一个简单的类模板。i
cludeiostreamusi
g
amespacestdtemplateclassTclassComparepublicCompareTaTbxaybTmaxretur
xyxyTmi
retur
xyxyprivateTxyi
tmai
Comparei
tcmp137coutcmp1maxe
dlcoutcmp1mi
e
dl
Comparefloatcmp231f72fcoutcmp2maxe
dlcoutcmp2mi
e
dl
fComparecharcmp3aAcoutcmp3maxe
dlcoutcmp3mi
e
dl运行结果如下
2.分析教程“运算符重载”中的例子,自行设计一个简单的重载运算符。i
cludeiostreamusi
g
amespacestdtemplatetype
ameTTmaxTaTbTcifbaabifcaacretur
ai
tmai
fi
ti11i22i33idoubled132d263d348dlo
gl135463l221345l312345limaxi1i2i3dmaxd1d2d3lmaxl1l2l3coutie
dlcoutde
dlcoutle
dl运行结果如下
f实验总结:运算符重载规则如下:①、C中的运算符除了少数几个之外,全部可以重载,而且只能重载C中已有的运算符。②、重载之后运算符的优先级和结合性都不会改变。③、运算符重载是针对新类型数据的实际需要,对原有运算r