C++ chapter 3

函数模板
声明:
------------template《class 类型参数名1,class 类型参数名2,...》
------------返回值类型  函数模板名(形参表)
------------{...}
class在此处并不表示类的意思,只是借用此关键字表示其后是一个类型参数。
class和typename可互换。
使用:
------------函数模板名(实参表)

------------函数模板名<类型1,类型2,...>(实参表)
采用形式1使用函数模板生成模板函数时,同一模板类型参数的各参数之间必须保持完全一致的类型。

函数模板----》执行相同代码
函数重载----》可执行不同代码

重载函数模板:
重载函数模板后,编译器首先 匹配类型完全相同的函数,如果 匹配失败,再 寻求函数模板进行匹配
------------template《class ElemType》
------------ElemType Max( ElemType x, ElemType y )
------------{ return x < y ? y : x; }
------------char *Max(char *str1, char *str2 )
------------{ return strcmp(str1, str2) < 0 ? str2 :str1;}
------------int main( void )
------------{
------------cout<< Max( 2, 3 ); //匹配模板函数
------------cout<< Max( "a", "b" ); //匹配函数
------------}

类模板、模板类
类模板生成具体的模板类,模板类可以用于生成具体的对象。
声明:
------------template《class 类型参数名1, class 类型参数名2,...》
------------class 类模板名
------------{...}    //class和typename可互换

定义类模板成员函数:
在类模板内定义时与一般情况一样。
在类模板外定义时:
------------template《class 类型参数名1, class类型参数名2,...》
------------返回值类型 类模板名《类型参数名1,类型参数名2,...》::成员函数名(参数表)
------------{...}    //class和typename可互换

生成对象格式:
类模板名<类型1, 类型2,...>对象名;
对于函数体实现较简单,并且行数较少的类模板成员函数都在类模板内定义;对于函数体实现较复杂并且函数多的类模板的成员函数在类模板外定义。
类型形参表中包含的表达式参数必须时常量表达式。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值