C++中的模板甚是重要,最近在读C++ Template此书;
想到C++ Template不能不想到C++中的多态机制,
C++中的多态划分:参数多态,包含多态,强制多态,重载多态: 前两个可以分为一类即是通用多态,后两个为特定多态。
参数多态:即用template实现的参数类型的多态实现的一种机制,下面进行总结
包含多台:即用虚函数实现的一种,基类指针可以指向子类同名虚函数的一种机制.
其中涉及到赋值兼容规则,virtual table等东东,以后进行总结
强制多态:即运算过程中涉及到得类型兼容转换规则,了解不多,应该是通过(operator 运算符)进行重载的一种机制
重载多态:即函数名相同,参数类型不同或者个数不同的一种重载机制,这个接触很早理解比较深刻;
Template的可以实现C++中参数多态的一种机制,但是template可以实现的东西应该远不如此,也可实现包含多态等
机制,但具体方法不甚了解;在读C++基础课本时,有这样一句话:继承和多态机制是C++中的精华所在.
当时不甚了解,现在也只懵懵懂懂,需后续学习总结
概要总结:
Template:
分为函数模板,类模板两个大类。
对函数模板实例化为模板函数,对类模板初始化为模板类。
基本声明方法:
函数模板:
template<typename T>
var function(T t)
{
.....
return var;
}
实例化之后:function<int>,function<double>...等等
类模板:
template<typename T>
class list
{
T t;
......
}
实例化之后:list<int>,list<double>....等等
上述typename可以改写为class: 即:template<class t>, 两者用法一样
此为基本用法,甚是简单,但template所能实现功能远不如此,需要继续研读,进行总结