模版

简介:
  • 非类型模版
  • 类型模版
    1. 类模版
    2. 函数模版

 

一。非类型模版 

复制代码
#include <iostream>
using namespace std;

template<int Size>
class Index
{
    public:
        int operator[](char vchar) 
        { return vchar % Size; }
};

int main()
{
    Index<26> index;
    cout << index['a'] << endl;
}
复制代码

 

二。类模版

模版——模版形参为基本类型

复制代码
#include <iostream>
using namespace std;

template<class Type>
class trie
{
    public:
        trie(Type val_1, Type val_2) : num_1(val_1), num_2(val_2) {}
        void print_sum() { cout << num_1 + num_2 << endl; }
    private:
        Type num_1, num_2;
};

int main()
{
    trie<int> tt(2, 5);
    tt.print_sum();
}
复制代码

模版——模版形参为自定义非模版类

复制代码
#include <iostream>
using namespace std;

template<class Type>
class trie
{
    public:
        Type num;
};
class Index
{
    public:
        int operator[](char vchar) 
        { return vchar % 26; }
};

int main()
{
    trie<Index> tt;
    cout << tt.num['a'] << endl;
    cout << tt.num['z'] << endl;
}
复制代码

模版——模版形参为自定义模版类

复制代码
#include <iostream>
using namespace std;

template<class Type, int Size>
class trie
{
    public:
        Type num;
};

template<int Size>
class Index
{
    public:
        int operator[](char vchar) 
        { return vchar % Size; }
};

int main()
{
    trie<Index<26>, 26> t;
}
复制代码

类模版成员函数定义

成员函数为非模版函数

复制代码
#include <iostream>
#include <cstring>
using namespace std;

template <class Type, int Size>
class test
{
    public:
        test(Type num) : val(num) {}
        void print_val();
    private:
        Type val;
};

template<class Type, int Size>
void test<Type, Size>::print_val()
{
    cout << val << " " << Size << endl;
}

int main()
{
    test<int, 10> a(4);
    a.print_val();
}
复制代码

成员函数为模版函数

复制代码
#include <iostream>
#include <cstring>
using namespace std;

template <class Type, int Size>
class test
{
    public:
        test(Type num) : val(num) {}
        template<class Type_fuc>
        void print_val(Type_fuc m);
    private:
        Type val;
};

template<class Type, int Size>
template<class Type_fuc>  //模版类的模版函数需要另起一行
void test<Type, Size>::print_val(Type_fuc m)
{
    cout << val << " " << Size << endl;
    cout << "m:" << m << endl;
}

int main()
{
    test<int, 10> a(4);
    a.print_val("hello");
}
复制代码

 

三。函数模版

复制代码
#include <iostream>
using namespace std;

template<class Type>
Type sum(Type num_1, Type num_2)
{
    return num_1 + num_2;
}
int main()
{
    cout << sum(2, 3) << endl;
    cout << sum(2.2, 3.0) << endl;
}
复制代码

结果

5

5.2

 




本文转自jihite博客园博客,原文链接:http://www.cnblogs.com/kaituorensheng/p/3601495.html,如需转载请自行联系原作者


相关文章
|
8月前
|
小程序
小程序模版|保险小程序模版源码
小程序模版|保险小程序模版源码
166 0
|
算法 编译器 C++
C++模版基础
C++模版基础
59 0
|
7月前
|
C++
C++中函数模版与类模版
C++中函数模版与类模版
61 4
|
8月前
|
C++
c++模版
c++模版
处理模版图片
处理模版图片
74 3
|
编译器 C++
【C++】模版(一)
泛型编程、模版(一): 1.泛型编程:
43 0
|
编译器 C++
C++中的类模版
🐰类模版 🌸类模版的声明 🌸类模版的实例化 🌸类模版参数 🌸默认模版实参
|
前端开发 开发者
less-模版配置|学习笔记
快速学习 less- 模版配置
130 0
|
Dubbo Java 应用服务中间件
DocView 现在支持自定义 Markdown 模版了!
有小伙伴反馈说希望可以自定义 Markdown 模版,这样就可以导出自己想要的样式了!这个功能可以有,毕竟大家不可能都生成一模一样的文档。现在来一起看看如何实现自定义模版吧!
117 0
|
C++
C++模版从精通到精神分裂
这是一个教科书般经典的例子。介绍C++的继承和多态。 这里唯一需要重点强调的是:对函数LetAnimalTalk和vector va 来说,我们可以想象他们是客户。[face=黑体]通过继承把变化封装到基类的后面,这样使用基类接口的客户就不需要改动![/face]对客户来说,无论基类后面怎么变化,你都影响不到我。
6766 0

相关实验场景

更多