其他分享
首页 > 其他分享> > 模板的各种使用

模板的各种使用

作者:互联网

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;

}

标签:4.5,各种,decltype,int,double,add,template,使用,模板
来源: https://blog.csdn.net/qqQQqsadfj/article/details/119237970