C++用模板实现反序输出
编写一个具有如下样式的类模板tmplt,用于实现所谓的反序输出问题,其中使用了类型参数T(使所处理的元素类型可变化)以及普通参数n(元素个数也可变化)而后编制主函数,将类模板实例化为某个具体的类并说明类对象,之后通过对象调用其负责输入数据的成员函数,再通过对象调用另一成员函数按反序输出那些输入数据。
(一) 需求分析:
题目的目标是要作到使用类模板tmplt , 实现所谓的反序输出问题,在这里使用了题目中给的提示,,使用了类型参数T(使所处理的元素类型可变化)以及普通参数n(元素个数也可变化):template <class T, int n> class tmplt {}
输入的值是一个数组的几个元素,具体的数组的长度由使用者自己决定, 可以通过修改n的大小来改变数组的大小,这样比较实用。输出的值是你输入的数组的反序。
(二)概要分析:
要完成这个题目,可以分解成两个问题,输入数据和反向输出数据,在这里可以都用类模板来实现。数组的赋值的要点在这里就不在细说了。
(三)详细分析:
根据题目的提示,使用的函数模板,和上一题有点小区别。
(四)调试分析:
在调试的过程中,要注意写函数体的时候它的前面要表明是哪个模板类。如果写法不正确,在调试的过程中一定要注意。template <class T,int n>void tmplt<T,n>::dataIn()用四个点的作用是表示它是该模板的成员函数。在编写成员函数的实体时比较简单就是一个一文数组的输入。用for循环来实现。
(五)用户使用说明:
用户在使用这个程序的过程中,只要修改调用函数的参数就可以改变输入数组的大小了,输入的数组可以任意,用户在判断该函数是否正确的过程中只要反序对比是否相同就可以了。
(优)测试结果:
(七)源程序:上传代码26.cpp
(八)编程体会:
编制这一题的过程中,我结合了题目的提示,理解了如何去使用这样一个类模板,其实题目也是比较简单的。在编写成员函数的时候要注意函数头的写法。
/*************************************************
Copyright (C), 2008
File name: 软件设计普通题26(26.cpp)
Author: 计06-1 高战
Description:
Others: ....
Function List: // 主要函数列表,每条记录应包括函数名及功能简要说明
template <class T, int n> class tmplt {
T arr[n]; // n个T类型的数据存放于数组arr之中
public:
void dataIn(); //从键盘输入n个T类型数据放入arr数组中
void reverseOut();
History:
<author> <time> <version > <desc>
*****************************************************/
#include<iostream>
using namespace std;
template <class T ,int n> //声明
class tmplt {
T *arr; // n个T类型的数据存放于数组arr之中
public:
void dataIn(); //从键盘输入
void reverseOut(); //将arr数组中的数据按输入的相反顺序输出
原文请找腾讯752018766优,文-论'文.网http://www.youerw.com/ cout<<"arr["<<i<<"]=";
cin>>arr[i];
}
} // 从键盘输入数据
template <class T,int n>
void tmplt<T,n>::reverseOut()
{
cout<<"反序输出的数据为:"<<endl;
for(int j=n-1;j>=0;j--)
{
cout<<arr[j]<<" ";
}
cout<<endl;
}
void main()
{
tmplt<int,10> t1;//确定输入类型与数组大小
t1.dataIn();
t1.reverseOut();1826