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所能实现功能远不如此,需要继续研读,进行总结