c++ 模板类

来源:互联网 发布:mac口红吧 编辑:程序博客网 时间:2024/06/05 18:56
模板类






/* * MyStack.h * *  Created on: 2014-3-24 *      Author: Administrator */#ifndef MYSTACK_H_#define MYSTACK_H_#include "iostream"template<class Item>class MyStack {public:MyStack();void add(const Item&);void show();virtual ~MyStack();private:Item item[100];int top;};template<class Item>         //模板方法MyStack<Item>::MyStack() {top = 0;}template<class Item>MyStack<Item>::~MyStack() {top = 0;}template<class Item>void MyStack<Item>::add(const Item& ni) {item[top++] = ni;}template<class Item>void MyStack<Item>::show() {using namespace std;for (int var = 0; var < top; ++var) {cout << "var:" << var<<",value:" << item[var];}cout << endl;}#endif /* MYSTACK_H_ */


数组大小动态生成



/* * MyStack.h * *  Created on: 2014-3-24 *      Author: Administrator */#ifndef MYSTACK2_H_#define MYSTACK2_H_#include "iostream"template<class Item>class MyStack2 {public:MyStack2(int _size);void add(const Item&);void show();virtual ~MyStack2();private:Item *item;int top;int size;};template<class Item>MyStack2<Item>::MyStack2(int _size) :size(_size) {top = -1;item = new Item[size];}template<class Item>MyStack2<Item>::~MyStack2() {top = -1;delete[] item;}template<class Item>void MyStack2<Item>::add(const Item& ni) {if (++top < size) {item[top] = ni;}else{top=size;std::cout<<"full"<<std::endl;}}template<class Item>void MyStack2<Item>::show() {using namespace std;for (int var = 0; var <top; ++var) {cout << "var:" << var << ",value:" << item[var]<<endl;}cout << endl;}#endif /* MYSTACK_H_ */



//MyStack<string> my;//my.add("Aba");//my.show();//MyStack<int> my1;//my1.add(1);//my1.show();//MyStack<const char *> my2;//my2.add("abc");//my2.show();MyStack2<const char *> my2(2);my2.add("abc");my2.add("abc");my2.add("abc");my2.add("abc");my2.add("abc");my2.show();



表达式参数模板


/* * MyStack3.h * *  Created on: 2014-3-24 *      Author: Administrator */#ifndef MYSTACK3_H_#define MYSTACK3_H_#include <iostream>template<class TP, const int n>class MyStack3 {public:explicit MyStack3(const TP initValue);TP operator[](const int index);~MyStack3();private:TP items[n];};template<class TP, const int n>MyStack3<TP, n>::MyStack3(const TP initValue) {for (int var = 0; var < n; var++) {items[var] = initValue;}}template<class TP, const int n>TP MyStack3<TP, n>::operator[](const int index) {return items[index];}template<class TP, const int n>MyStack3<TP, n>::~MyStack3() {}#endif /* MYSTACK3_H_ */



















0 0