C++类和对象的模板
来源:互联网 发布:淘宝包包代理厂家直销 编辑:程序博客网 时间:2024/04/29 11:07
在程序设计中往往尊在这样的两种情况,一种是两个或多个函数的程序结构相同,区别仅在于其参数类型或函数返回类型不同;另一种是两个或多个类的结构相同,差别仅在于部分类的成员的类型或成员函数的类型及参数的类型不同。不论哪种情况,其程序框架都基本相同,只是具体细节不同。
C++提供了模板机制,利用这一机制,可简化程序代码,实现软件复用。C++有两种模板类型:
(1)函数模板:是一种抽象通用的函数,用它可生成一批具体的函数。这些由函数模板经实例化生成的具体函数成为模板。
(2)类模板:是一种抽象通用的类,用它可生成一批具体的类。这些类模板经实例化生成的具体的类成为模板类。
下面通过一个具体的例子来理解模板。
实验内容:
根据已知的Stack<T>类
Stack<T>
-element[100]:T
-size:int
+Stack()
+empty():bool
+peek():T
+push(value:T):void
+pop():T
+getSize():int
(1) 向Stack类添加一个实例函数printStack,以打印栈中所有元素。
(2) 为Stack类添加一个实例函数contains(T element),检查给定元素是否在栈中。
源代码
Stack.h
#include<iostream>
using namespace std;
template <class T>
class Stack
{
Telement[100];
intsize;
public:
Stack();
boolempty();
Tpeek();
voidpush(T value);
Tpop();
intgetsize();
voidprintStack();
bool contains(T element);
};
template <class T>
Stack<T>::Stack()
{
size=0;
}
template <class T>
bool Stack<T>::empty()
{
if(size==0)
returntrue;
else
returnfalse;
}
template <class T>
int Stack<T>::getsize()
{
returnsize;
}
template <class T>
T Stack<T>::peek()
{
returnelement[size-1];
}
template <class T>
T Stack<T>::pop()
{
if(size<1)
cout<<"栈空!"<<endl;
else
{
size=size-1;
returnelement[size];
}
}
template <class T>
void Stack<T>::push(T value)
{
element[size]=value;
size++;
}
template <class T>
bool Stack<T>::contains(T element)
{
for(inti=0;i<100;i++)
{
if(element==this->element[i])
returntrue;
}
returnfalse;
}
template <class T>
void Stack<T>::printStack()
{
while(!empty())
{
cout<<pop()<<"";
}
}
Main.cpp
#include<iostream>
#include"Stack.h"
using namespace std;
int main()
{
Stack<int>stack1;
for(int i=1;i<=10;i++)
{
stack1.push(i);
}
cout<<"栈中所有元素如下:"<<endl;
stack1.printStack();
cout<<endl;
cout<<"栈中是否有数字2 ?"<<stack1.contains(2)<<endl;
cout<<"栈中是否有数字11 ?"<<stack1.contains(11)<<endl;
return0;
}
- 掌握C++类和对象的模板
- C++类和对象的模板
- 【c++】模板和模板类
- C++类和对象的模板的实验
- C++,template,类模板和函数模板
- c++---函数和类模板
- c++---类和对象
- C++:类和对象
- 类和对象(C++)
- 【c++】类和对象
- C++:类和对象
- C++:类和对象
- 【C++】类和对象
- 【C++】智能指针类和OpenCV的Ptr模板类
- C语言不支持函数模版和类模板的使用
- 模板的概念 ---模板分两类:函数模板和类模板
- 模板的概念 ---模板分两类:函数模板和类模板
- 模板的概念 ---模板分两类:函数模板和类模板
- poj2299
- Datasnap 使用JSON 传递数据的简易方法
- HT for Web中3D流动效果的实现与应用
- bitmap类C++实现
- javascript 事件监控
- C++类和对象的模板
- 数据挖掘之-简单属性之间的相似度和相异度
- 服务器做nginx+tomcat集群+session共享
- 【算法拾遗】最大数和最小数
- freemarker自定义标签报错(六)
- java 二维数组,三维数组 ,糊糙数组,多维数组示例代码
- 网络概述
- java多线程之路之线程状态—Core Java学习
- pvr查看工具 windows 下预览