前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >c++ 之模板进阶

c++ 之模板进阶

作者头像
发布2018-05-28 17:16:59
7420
发布2018-05-28 17:16:59
举报
文章被收录于专栏:

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-04-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档