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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JAVA技术站

shell学习二数组 原

类似与C语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。

5210
来自专栏小樱的经验随笔

Java学习笔记【持续更新】

一个简单的java程序如下: class Sakura {   public static void main(String[] arges)   {     ...

42650
来自专栏五分钟学算法

看完这个你还不会 插入排序 么

由于LeetCode上的算法题很多涉及到一些基础的数据结构,为了更好的理解后续更新的一些复杂题目的动画,推出一个新系列 -----《图解数据结构》,主要使用动画...

11330
来自专栏海说

18、面向对象基本原则及UML类图简介

18.1、面向对象基本原则 18.1.1、面向抽象原则 抽象类特点: a、抽象类中可以有abstract方法,也可以有非abstract方法。 b、抽象类...

23100
来自专栏青玉伏案

算法与数据结构(十五) 归并排序(Swift 3.0版)

上篇博客我们主要聊了堆排序的相关内容,本篇博客,我们就来聊一下归并排序的相关内容。归并排序主要用了分治法的思想,在归并排序中,将我们需要排序的数组进行拆分,将其...

20150
来自专栏用户2442861的专栏

STL list源码分析以及实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/d...

11230
来自专栏鸿的学习笔记

一句话讲明白基本排序

4620
来自专栏Laoqi's Linux运维专列

python3–复习+正则

47980
来自专栏python3

python3--小数据池,is,字符编码

python3x中的str在内存中的编码方式是unicode. python3x中的str不能直接存储和发送

23010
来自专栏cs

xml基本知识点

xml, Extensible Markup Language,可扩展的标记语言。 ? xml文档结构.jpg xml文档的规则 1.0 xml文档必须以一个...

35050

扫码关注云+社区

领取腾讯云代金券