苏嵌 17.03.07

    xiaoxiao2021-03-25  186

    使用指针时:函数模板的特例化

    加上头文件#include <cstring>

    template<>

    const char * const& max(const char * const& a,const char * const& b)

    {

    return strcmp(a,b) > 0 ? a : b;

    }

    模板和自定义函数同时存在时,系统优先调用自定义函数

    模板也可重载:

    template<typename T>

    const T& max(const T& a,const T& b,const T& c)

    {

    return (a > b ? a :b) > c ? (a > b ? a : b) : c;

    模板的特例化也可重载:

    const char * const& max(const char * const& a,const char * const& b)

    {

    return strcmp(a,b) > 0 ? a : b;

    }

    ①函数模板不是函数,不能被执行

    ②置换代码中的类型参数得到模板函数---实例化

    ③实例化后的模板函数是真正的函数,可以被执行

    函数模板---->实例化---->模板函数

    模板被变异了两次:

    ①实例化之前,先检查模板代码本身,语法检查

    ②实例化期间,检查模板代码,查看是否所有的调用都有效

    转载请注明原文地址: https://ju.6miu.com/read-2583.html

    最新回复(0)