模板

xiaoxiao2021-02-28  48

模板定义:模板就是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数,从而实现了真正的代码可重用性。模版可以分为两类,一个是函数模版,另外一个是类模版。

函数模板的一般形式如下:

Template <class或者也可以用typename T>

返回类型函数名(形参表)

{//函数定义体 }

说明: template是一个声明模板的关键字,表示声明一个模板关键字class不能省略,如果类型形参多余一个,每个形参前都要加class<类型形参表>可以包含基本数据类型可以包含类类型.

类模板:

Template < class或者也可以用typename T >

class类名{

//类定义......

};

说明:其中,template是声明各模板的关键字,表示声明一个模板,模板参数可以是一个,也可以是多个

#include<iostream> #include<string> using namespace std; #define STACKMAX 5 template <class T> class Stack{ public: Stack() { sp = 0; } void push(T value) { if (sp != STACKMAX) { stack[sp++] = value; } else cout << "栈溢出,哈哈哈" << endl; } T pop() { if (sp != 0) { return stack[--sp]; } else { cout << "栈空了,哈哈哈" << endl; return -1; } } ~Stack() { } private: T stack[STACKMAX]; T sp ; }; int main() { Stack<int> stack;//注意用模板定义类对象的时候要使用尖括号指明类型 cout << "开始入栈" << endl; for (int i = 0; i < 6; i++) { stack.push(i);//入栈 } cout << "开始出栈" << endl; for (int i = 0; i < 6; i++) { cout << stack.pop() << endl;//出栈 } system("pause"); return 0; }

这个是网上有人用模板类写的,格式很不错。还有就是不要把函数模板分成原型和实现两个部分。如果编译器看不到模板的完整代码,它就无法正确地生成代码。

关于C++Template的理解:

C++Template包含函数模板和类模板两种,顾名思义这两种的不同点在于所使用的场合不同,函数模板针对于函数使用,而类模板则针对于类使用可以提高程序的重用性,减少代码的冗余及代码量。

转载请注明原文地址: https://www.6miu.com/read-600113.html

最新回复(0)