模板的各种使用

1、数据结构:能够存储任意类型

2、能够操作存储任意类型数据的数据结构


模板(泛型编程)

模板的各种使用

template<typename T>与template<class T>效果是一模一样的 

模板的各种使用

模板的各种使用

 


当a, b的类型不一致时,会报错,

解决方案一:

要改成add<统一的类型>(3, 4.5).

add<double>(3, 4.5) 

解决方案二:

模板的各种使用

 模板的各种使用

 把template<typename T>改成template<typename T, typename U>

把T add(T a, T b)改成 T add(T a, U b);

如果add(2, 4.5)那么就是int add(int a, double b);

如果add(4.5, 2)那么就是double add(double a, int b)

解决方案三:

decltype(): 根据表达式推导表达式的返回类型,不进行表达式计算

decltype(4.5, 2):推导double

decltype(2, 4.5):推导double

decltype(2, 4):推导int 

了解以上就可以这样用:

template<typename T, typename U>

decltype(T(), U()) add(T a, U b){

        return a + b;

}

以上依旧有bugs,当T和U没有构造函数时会报错

解决方案四:

返回值后置:auto -> decltype()

template<typename T, typename U>

auto add(T a, U b) -> decltype(){

        return  a + b;

}

上一篇:【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 二 | 准备参数 | 远程调用 mmap 函数 )


下一篇:decltype有什么用