zoukankan      html  css  js  c++  java
  • c++ 之模板进阶

    c++中的多态主要体现在模板与继承上。 

    继承可以理解为有相互关系的不同数据结构的集合。 而模板则是完全独立的数据结构,彼此无需依赖

    在函数中使用模板, 可以根据函数传入的参数自动推导类型,从而省略到很多重复的代码

    比如,一个求和的函数

    template<typename T>
    T add(T a, T b)
    {
         return a + b;
    }

    这是最简单的模板使用方法。 假设现在要实现一个函数, 传入一个结构体, 打印出结构体的所有变量。由于c++没有反射机制, 所以在模板函数中,没办法判断变量的类型, 也就没办法知道结构体变量有哪些成员

    解决办法

    template<typename T>
    void visit(T a)
    {
    return;
    }

    template<>
    void visit(A a)
    {
    // 打印成员
    return;
    }

    template<>
    void visit(B a)
    {
    // 打印成员
    return;
    }

    首先定义一个模板函数, 然后针对每一个具体的结构体变量, 实现一个函数。

  • 相关阅读:
    ASCII&Base64
    CentOS自动同步时间
    Java的HashMap
    Java线程同步操作
    Nginx基本配置与应用
    vc中调用Com组件的方法详解
    VC++ try catch (转)
    oracle中exp,imp的使用详解
    jdbc oracle 连接字符串
    标准的开源实现
  • 原文地址:https://www.cnblogs.com/myd620/p/8961545.html
Copyright © 2011-2022 走看看