文档章节

模板参数

首席吹牛官
 首席吹牛官
发布于 2015/05/22 12:57
字数 238
阅读 6
收藏 0

                  模板参数可以是某些类型或者非类型。类型参数需用使用typename或class关键字才指定。

                  如下:

                  template<typename T1,typename T2,...> class className{...}

                  template<class T1,  class T2,...> class className{...}

                  非类型的参数就是通常的参数定义,表示模板在实例化时是用的常量。

                 还是以数组模板类为例子:

                

#include <iostream>

using namespace std;


template <typename T = int, int len = 10>
class Array
{
public:
    Array();
    ~Array();
    int length() const {
        return m_length;
    }
    T& get(int index) const;
    T operator[](int index);
private:
    T *p_array;
    int m_length;
};

template <typename T,int len>
Array<T,len>::Array():
    p_array(new T[len]),
    m_length(len)
{
}

template <typename T,int len>
Array<T,len>::~Array()
{
    delete p_array;
}
template <typename T,int len>
T& Array<T,len>::get(int index) const
{
    if (index > m_length -1) {
        throw "ERROR:index is out!";
    } else {
        return p_array[index];
    }
}
template <typename T,int len>
T Array<T,len>::operator[](int index)
{
    return p_array[index];
}


int main()
{
    Array<> intArr;
    cout << "the length of int array is " << intArr.length() << '\n';

    try {
        intArr.get(11);
    }catch(const char *ex) {
        cout << ex << '\n';
    }

    Array<char> charArr;


    Array<char,20> char20Arr;

    cout << "the length of char20 array is " << char20Arr.length() << '\n';

    return 0;
}


© 著作权归作者所有

首席吹牛官
粉丝 9
博文 368
码字总数 191938
作品 0
闵行
程序员
私信 提问
C++中设计模式——适配器模式(Adapter模式)

适配器 概述 适配器模式将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 用适配器配出栈和队列  用顺序表和链表适配出栈和队列。...

qq_38646470
2018/05/13
0
0
C++泛型编程学习(一)

目录 前言 从接触到泛型编程都现在决定写博客,不知道过去多久的时间,感觉每次记得,然后每次都会忘记,所以没有记录的工作,基本等于没做。。某句话就是,一旦你今天想要完成的事情没有完成...

simonforfuture
2017/12/28
0
0
【c++】模板知识总结

首先来谈谈什么是模板? 形象的来说,模板就是一个创建类或函数的蓝图或者公式。 首先我们来看一个例子: 比如说我们要实现一个函数来比较两个数的值,按照我们以前的习惯,我们会选择重载函...

flowing_wind
2017/11/04
0
0
C++的模板机制

为什么需要模板编程 所谓函数模板,实际上是建立一个通用函数,其函数返回类型、形参类型或函数中使用的类型不具体指定,用一个虚拟的类型来代表,这个通用函数就称为函数模板 所谓类模板,和...

沙米笔记
2016/05/28
729
2
C++泛型编程学习(三)——类模板

目录 目录 前言 类模板实例 类模板小结 总结 前言 C++泛型编程学习(二)——类模板中已经介绍了如何在一个文件中,把类模板的方法和实现分开,这里主要记录下类模板的声明和定义分别写在头文件...

simonforfuture
2018/01/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
今天
6
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
今天
7
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
今天
5
0
OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
1K
11
MongoDB系列-- SpringBoot 中对 MongoDB 的 基本操作

SpringBoot 中对 MongoDB 的 基本操作 Database 库的创建 首先 在MongoDB 操作客户端 Robo 3T 中 创建数据库: 增加用户User: 创建 Collections 集合(类似mysql 中的 表): 后面我们大部分都...

TcWong
今天
40
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部