|
原题如下:
#include <stdio.h>
int main()
{
MyType<int> s1(10),s2(-5),s3;
MyType<double> s4(10.3),s5(5.2),s6;
s3=s1+s2;
s6=s4-s5;
printf("s1.value=%d s2.value=%d s3.value=%d\n",s1.getValue(),s2.getValue(),s3.getValue());
printf("s4.value=%2.1f s5.value=%2.1f s6.value=%2.1f\n",s4.getValue(),s5.getValue(),s6.getValue());
return 0;
}
要求:用C++语言定义MyType(包括结构体),使之能通过上面的测试程序。测试程序的输出应该为:
s1.value=10 s2.value=-5 s3.value=5
s4.value=10.3 s5.value=5.2 s6.value=5.1
大家可以先试一下,很简单!好,让我们提高一下难度!
我们改一下题,请看下题:
#include <iostream.h>
int main()
{
MyType<int> s1(10),s2(-5),s3;
MyType<double> s4(10.3),s5(5.2),s6;
s3=s1+s2;
s6=s4-s5;
cout<<"s1.value="<<s1<<" s2.value="<<s2<<" s3.value="<<s3<<endl;
cout<<"s4.value="<<s4<<" s5.value="<<s5<<" s6.value="<<s6<<endl;
return 0;
}
要求:
1.用C++语言定义MyType(包括结构体),使之能通过上面的测试程序。测试程序的输出应该为:
s1.value=10 s2.value=-5 s3.value=5
s4.value=10.3 s5.value=5.2 s6.value=5.1
2.为充分体现封装性,不允许出现像上题中出现的getValue()这种暴露内部私有数据的函数;
3.MyType必须定义和实现在MyType.h和MyType.cpp文件中。
请做出来的同学把完整的MyType.h,MyType.cpp和main.cpp文件贴出来,并注明您使用的编译器及版本号。
做完这个小程序,我想大家至少会对C++多有以下的理解,假若你以前不知道的话:
1.对分离式编译的理解。
2.对模板类‘+’‘-’运算符重载的理解(如果你是用重载成员函数的方式,It's Too easy!没意思!我指的是用友元函数来实现:)
3.强制大家重载<<运算符就为了让使用友元函数,应该能体会如何在模板类中使用模板函数。 |
|