• C++模板的特化


    demo.h

    #pragma  once
    
    #include <cstring>
    
    // 函数的特化
    template <class T>
    T max(T a, T b){
        return a > b ? a : b;
    }
    
    template<>
    char* max(char* a, char *b){
        return strcmp(a, b) > 0 ? a : b;
    }
    
    // 类内某函数的特化
    template<class T>
    class Demo{
    private:
        T pt1, pt2;
    public:
        Demo(T p1, T p2) :pt1(p1), pt2(p2){}
        T max() const {
            return pt1 > pt2 ? pt1 : pt2;
        }
    };
    
    template<>
    char* Demo<char*>::max()const{
        return strcmp(pt1, pt2) > 0 ? pt1 : pt2;
    }

    main.cpp

    #include <iostream>
    #include <string>
    #include "demo.h"
    
    using namespace std;
    
    int main(){
        cout << max<string>("aaa", "bbb") << endl;
        cout << max<char*>("ccc", "ddd") << endl;
    
        Demo<string> demo("aaa","bbb");
        cout << demo.max() << endl;
    
        Demo<char*> obj("ccc","ddd");
        cout << obj.max() << endl;
        return 0;
    }
    /*
    OUTPUT:
        bbb
        ddd
        bbb
        ddd
    */ 
  • 相关阅读:
    QuartzQuartz定时任务
    jdbc模糊查询、分页查询、联合查询
    PreparedStatement
    web服务器简述
    JDBC基本操作
    RMI
    Http编程
    2020毕业季业务开发宝典
    程序设计流程图
    系统概要框图
  • 原文地址:https://www.cnblogs.com/laohaozi/p/12537806.html
Copyright © 2020-2023  润新知