关于c++函数模板和类模板的总结。(mooc崔毅东)

今天学泛型编程所以总结一下。

1.元编程和泛型编程。

首先我们通常写下的编程是去处理数据。元编程是写下程序去处理程序。

而我们写下泛型编程则是通过对数据的结构做最小假设去处理不同类型数据,其实现形式是通过编译期根据模板生成模板实例,也就是程序。

所以c++的泛型编程是通过元编程实现二点,也是由代码模板生成代码。

是函数模板:


声明类型参数有两个关键字:

typename:描述性强。

class:容易和类混淆。

在模板中声明和定义必须在一起

函数模板:

tempplate<class T,typename S>

(T)<name>(T a.S b){

}

其中我们在函数返回值类型的位置可以使用auto来自行推导返回值类型。

函数模板的实例化分为两种类型一种是显式实例化,一种是隐式实例化

#include<iostream>
template/*模板前缀*/<typename T/*类型参数,可以采用默认形式默认 T=int*/>
T our(T a) {
    return a;
}
template int our<int>(int);//显式实例化
int main() {
    int a = 0;
    our(a);//隐式实例化
    our<int>(a);//隐式实例化
    our<>(a);//隐式实例化

}

由函数模板实例化得到的函数叫做实例函数。

类模板:

template <class T>

class abc{

public:

T peek();

T push(T a);

}

如此形式。

类模板的实例化:

显式实例化:

template class abc<int>;

 隐式实例化:

abc<int> abcint;//注意命名规则;

下面是对数组类模板的例子

 

默认类型与非类型参数:

可以指定class  T中T的默认类型。

其次,非类型参数:

其中:

Stack<char,100>charStack;对象作为非类型参数,同时我们不难看出,

我们平时定义的数组就是采用一个数组模板类的形式。

ps:、

普通类可以从类模板实例继承。

模板可以从类继承。

类模板可以继承类模板。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随便取名字

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值