C++ 函数模板返回值指定
2017-11-29 02:26
183 查看
C++函数模板不能偏特化,可以全特化。另外,返回值也是可以用static_cast指定的。
举例如下:
指定T1为int,代码如下:
指定T1, T2参数为int和float,代码如下:
一个完整的利用函数模板指定函数返回值的例子如下:
还有一些下次再写。
举例如下:
template<typename T1, typename T2, typename T3> T1 add(T2 a, T3 b) { return static_cast<int>(a + b); }
指定T1为int,代码如下:
int result = add<int>(0.4, 0.9);
指定T1, T2参数为int和float,代码如下:
int result = add<int, float>(0.4, 0.9);
一个完整的利用函数模板指定函数返回值的例子如下:
#include <iostream> enum class AAA : int { TYPE1 = 33, TYPE2 = 52, TYPE3 = 92, TYPE4 = 102, TYPE5 = 22, TYPE6 = 8, TYPE7 = 12, }; enum class BBB : int { TPYE1 = AAA::TYPE1, TYPE3 = AAA::TYPE3, TYPE5 = AAA::TYPE5, }; enum class CCC : int { TPYE2 = AAA::TYPE2, TYPE3 = AAA::TYPE3, TYPE5 = AAA::TYPE5, }; AAA uec2AAA (int uec) { AAA rc; switch (uec) { case 1: rc = AAA::TYPE1; break; case 2: rc = AAA::TYPE2; break; case 3: rc = AAA::TYPE3; break; case 4: rc = AAA::TYPE4; break; case 5: rc = AAA::TYPE5; break; case 6: rc = AAA::TYPE6; break; default: break; } return rc; } template<typename T1> T1 uec2Rc(int a) { return static_cast<T1>(uec2AAA(a)); } int main(void) { BBB result = uec2Rc<BBB>(3); printf("result = %d\n", static_cast<int>(result)); CCC result2 = uec2Rc<CCC>(2); printf("result = %d\n", static_cast<int>(result2)); return 0; }
还有一些下次再写。
相关文章推荐
- c++未指定返回值
- string替换所有指定字符串(C++)
- C/C++底层实现指定磁盘只读
- 用C++实现查找指定文件夹下的类型文件名
- C++获取指定文件夹下的所有文件名(或路径)
- C++中函数中参数和返回值都是用户定义类型(这里主要是类的情况时的分析)
- C++ 存储指定文件夹下的文件
- c++返回值与引用
- c++模板函数在返回值时使用类型型参
- C++返回值为对象时复制构造函数不执行怎么办
- C#调用C++ 平台调用P/Invoke 结构体--输入输出参数、返回值、返出值、结构体数组作为参数【五】
- Jni 简单实战 获取c++返回值
- C++引用和函数返回值
- Android里面从Dialog中获取返回值并写入指定TextView组件
- Python3基础 Python的函数都有返回值 无指定返回值的函数 返回NONE对象
- c#调用c++开发的dll const char* 返回值接收问题
- C++中指定小数位数输出
- 用c++建立一个类PrimeNUM,求指定数据范围内的所有素数(质数)。
- c++命令提示符窗体下打印指定大小的菱形代码
- C++学习day13之返回值