博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
类模板和函数模板
阅读量:4167 次
发布时间:2019-05-26

本文共 1526 字,大约阅读时间需要 5 分钟。


  模板一般分为模板函数和类模板。

                  模板函数的一般形式为:

                  template<类型形参表> 返回值类型 函数名(参数列表){函数体}

                  类模板的一般形式为:

                  template<类型形参表> class 类名 {类声明体}

                  类中成员函数的类外实现的形式

                  template<类型形参表> 返回值类型 类名<类型名表>::成员函数名(参数列表) {函数体}

                  下面以数组模板类为例

                  

#include 
using namespace std;template
class Array{public: Array(int size = 10); ~Array(); T operator[](int index); T& get(int index) const; int length() const { return m_len; }private: Array(const Array&); Array& operator ==(const Array&); T *p_array; int m_len;};template
Array
::Array(int size): p_array(new T[size]), m_len(size){}template
Array
::~Array(){ delete p_array;}template
T Array
::operator[](int index){ return p_array[index];}template
T& Array
::get(int index) const{ if (index > m_len -1 ) { throw "ERROR:index is out!"; } else { return p_array[index]; }}int main(){ Array
intArr; cout << "length of int array is " << intArr.length() << '\n'; try{ intArr.get(11); }catch(const char *ex) { cout << ex << '\n'; } intArr.get(0) = 2; cout << "elems of int array is "; for (int i = 0; i < intArr.length();++i) { cout << intArr[i] << '\t'; } cout << '\n'; Array
charArr(5); cout << "length of cahr array is " << charArr.length() << '\n'; try{ charArr.get(11); }catch(const char *ex) { cout << ex << '\n'; } charArr.get(4) = 'Z'; cout << "elems of char array is "; for (int i = 0; i < charArr.length();++i) { cout << charArr[i] << '\t'; } return 0;}

         结果:

       

       使用模板一般都是逻辑相同,类型不同。

      模板函数在实例化时以函数重载来体现都是在编译期完成。     

转载地址:http://nxqxi.baihongyu.com/

你可能感兴趣的文章
Pentaho 开发: 在eclipse中构建Pentaho BI Server工程
查看>>
JSP的内置对象及方法
查看>>
android中SharedPreferences的简单例子
查看>>
android中使用TextView来显示某个网址的内容,使用<ScrollView>来生成下拉列表框
查看>>
andorid里关于wifi的分析
查看>>
Spring MVC和Struts2的比较
查看>>
Hibernate和IBatis对比
查看>>
Spring MVC 教程,快速入门,深入分析
查看>>
Android 的source (需安装 git repo)
查看>>
LOCAL_PRELINK_MODULE和prelink-linux-arm.map
查看>>
Ubuntu Navicat for MySQL安装以及破解方案
查看>>
Class.forName( )你搞懂了吗?——转
查看>>
jarFile
查看>>
EJB与JAVA BEAN_J2EE的异步消息机制
查看>>
数学等于号是=那三个横杠是什么符
查看>>
HTTP协议详解
查看>>
java多线程中的join方法详解
查看>>
idea添加gradle模块报错The project is already registered
查看>>
在C++中如何实现模板函数的外部调用
查看>>
HTML5学习之——HTML 5 拖放
查看>>