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;
    }

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

  • 相关阅读:
    寒假作业1实践题
    寒假作业1问答题
    (1.21)思考题
    [golang note] 匿名组合
    [golang note] 类型系统
    [golang note] 错误处理
    [golang note] 函数定义
    [golang note] 流程控制
    [golang note] 内建类型
    [golang note] 数组切片
  • 原文地址:https://www.cnblogs.com/myd620/p/8961545.html
Copyright © 2011-2022 走看看