两种指定函数模板类型的方法

来源:互联网 发布:modis atmosphere数据 编辑:程序博客网 时间:2024/05/11 18:13
// filename: test.cpp#include <stdio.h>template <typename T>int a(){  int j = sizeof(T);  printf("T size %d\n", j);  return 0;}template <typename V>int b(V v){  int j = sizeof(v);  printf("V size %d\n", j);  return 0;}int main(int argc, const char *argv[]){  // 方法1:通过手写类型来指定模板类型  a<int>();  a<double>();  // 方法2:通过编译器自动推导类型来指定模板类型  int i;  double d;  b(i);  b(d);  return 0;}

编译执行:

[xiaochu.yh@OB test]$ g++ test.cpp [xiaochu.yh@OB test]$ ./a.out T size 4T size 8V size 4V size 8

上面是单独针对函数,你还会看到一个类里面的普通函数、static函数也这么用,一回事。

class SomeClass {public:  template <typename C>  static void run() { printf("C size %d\n", sizeof(C)); }  template <typename X>  void fish() { printf("X size %d\n", sizeof(X)); }};int main(int argc, const char *argv[]){  SomeClass::run<int>();  // 注意,类型是写在run后面  // SomeClass<int>::run(); // 编译失败,思考一下为什么  SomeClass s;  s.fish<int>();  return 0;}
0 0
原创粉丝点击