(十六)模板与泛型编程

template <typename T, int a>

typename为关键字,T为类型名,int a为非类型参数,表示一个值而非一个类型


模板头文件通常包括声明和定义,原理与宏类似

函数模板,编译器可以帮助推断模板参数类型,但是类模板不能推断参数类型.必须使用尖括号提供额外信息.


类模板的成员函数只有当使用到时才进行实例化,如果没有被使用,则不会被实例化.


模板声明,和普通声明一样,只是在前面加上 template <typename T>


通过作用于访问的名字都不是类型,如果希望是一个类型,使用关键字 typename 来说明

return typename T::value_type();


成员模板,不能使虚函数,成员数是模板.


模板被使用时才会进行实例化,意味着相同的实例可能出现在多个对象文件中.可以通过显示实例化来避免这种开销.


置尾返回类型可以用类型推断.


如果一个函数参数是指向末班参数类型的右值引用(T&&),则可以传递左值或右值的实参.并且对应的实参const属性和左值/右值属性将得到保持.


可以转换从一个左值到一个右值, 使用static_cast


可变参数模板,扩展,转发

模板重载,特例化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值