C++primer plus第六版课后编程练习答案10.8
2015-11-30 16:13
585 查看
头文件 #ifndef LISt_H_ #define LIST_H_ #include<iostream> using namespace std; static const int max=10; template <class T> class List { T t[max]; int n; public: List(){n=0;} void add(T a); bool isFull(); bool isEmpty(); void visit(void (*pf)(T &)); }; template<class T> void show(T &t){cout<<t<<endl;} template <class T>//每一个代码块都需要一个函数模板 void List<T>::add(T a) { if(isFull()) { cout<<"list is full"<<endl; } else { t =a; n++; } } template <class T> bool List<T>::isEmpty() { if(n<0||n>max) { cout<<"error!"<<endl; n=0; return 0; } else if(0==n) return 1; else return 0; } template <class T> bool List<T>::isFull() { if(n<0||n>max) { cout<<"error!"<<endl; n=0; return 0; } if(max==n) return 1; else return 0; } template<class T> void List<T>::visit(void (*pf)(T &a)) { if(isEmpty()) { cout<<"list is empty"<<endl; } else { for(int i=0;i<n;i++) show(t[i]); } } #endif
#include<iostream> #include "list.h" using namespace std; void main() { List<double> m;//当构造函数是无参数函数时,list l; List<int> n;//有模板的话要在函数后标明函数类型 double a[5]={1.1,2.2,3.3,4.4,5.5}; int b[5]={1,2,3,4,5}; m.visit(show); for(int i=0;i<5;i++) { m.add(a[i]); } for(i=0;i<5;i++) n.add(b[i]); for(i=0;i<5;i++) n.add(b[i]); n.add(8); m.visit(show); n.visit(show); }
相关文章推荐
- 详解C语言中的符号常量、变量与算术表达式
- C++primer plus第六版课后编程练习答案10.7
- C++primer plus第六版课后编程练习答案10.6
- C++中的explicit
- C++primer plus第六版课后编程练习答案10.5
- 64位系统下gcc按照32位编译c程序
- C++primer plus第六版课后编程练习答案10.4
- C语言_冒泡排序
- c++字符串分词
- 循环链表Josephus问题(c,cpp)
- C++primer plus第六版课后编程练习答案10.3
- 《C++ Primer 5th》读书笔记6---再谈初始化
- C++primer plus第六版课后编程练习答案10.2
- C++primer plus第六版课后编程练习答案10.1
- 【C++】位图
- C语言复习题1.1
- C++类和对象的概念
- C++ 类中指向函数的指针 以及 类模板
- c++的float类型包含的最值问题....
- C语言实现printf的部分功能