- 浏览: 678838 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (181)
- Matlab (16)
- Java (26)
- autoHotkey (4)
- openCV (1)
- C++ (50)
- PDF-XChange Viewer (2)
- 学术 (11)
- javascript (4)
- linux (11)
- SWT (9)
- latex (7)
- GAE (2)
- windows (6)
- C# (3)
- PS (20)
- JNI (4)
- latex,批处理 (0)
- 批处理 (4)
- Android (5)
- 矩阵论 (1)
- SVM (1)
- 概率图模型 (0)
- Python (12)
- Eigen (5)
- 编程题 (1)
- MKL (1)
- 神经网络 (9)
- 最优化 (2)
- 摄影 (1)
- PPT (0)
- After Effects (3)
- CUDA (3)
- caffe (0)
- MXNet (2)
- svn (1)
- R (0)
- 虚拟机 (0)
- tensorflow (7)
- theano (1)
- Keras (1)
- vim (1)
- xgboost (1)
- spark (6)
- eclipse (2)
- word2vec (0)
- hadoop (1)
- dmlc (1)
- git (0)
最新评论
-
jeffersonz:
请问大神,这个插件记录下来的脚本为什么不能再Extendscr ...
PhotoShop - 记录PS的所有操作为JavaScript代码 -
cherishLC:
Andy__Zou 写道cherishLC 写道Andy__Z ...
Eigen的编译选项;MKL的使用 -
Andy__Zou:
cherishLC 写道Andy__Zou 写道cherish ...
Eigen的编译选项;MKL的使用 -
cherishLC:
Andy__Zou 写道cherishLC 写道Andy__Z ...
Eigen的编译选项;MKL的使用 -
Andy__Zou:
cherishLC 写道Andy__Zou 写道 您好,您的工 ...
Eigen的编译选项;MKL的使用
一种用于实现多态的方法,与虚函数的不同在函数的绑定是在编译期完成的,运行的速度更快!!
不多说了,直接上代码:
输出如下:
参考链接:
http://en.wikipedia.org/wiki/Curiously_Recurring_Template_Pattern
不多说了,直接上代码:
#include <iostream> /* @file 学习CRTP (Curiously recurring template pattern). 一种实现多态(polymorphism) 的方式,与虚函数的不同在于,CRTP的函数绑定是在编译期间完成的,因而执行效率更高。 CRTP通过 子类 继承 以子类为模板参数的父类 来实现。 共用代码的函数可以直接在父类中实现。 而对于不同子类需要不同实现的函数,只需要在父类的该函数中将父类静态转换为子类(父类转为子类没问题,因为我们用的总是子类!),并调用子类的该方法即可。 需要说明的一点是:对于需要多态的方法,由于父类的方法体只是一个函数调用,因而编译时是可以inline的。运行时完全没有额外的开销! @link http://en.wikipedia.org/wiki/Curiously_Recurring_Template_Pattern */ ///基类 template<typename Derived> class Base { public: inline void interfaceMethod() { std::cout << __FUNCTION__ << std::endl; std::cout << " "; //静态转换后调用子类的方法 static_cast<Derived*> (this)->implementationMethod(); } static void static_func() { std::cout << __FUNCTION__ << std::endl; std::cout << " "; Derived::static_sub_func(); //注意这里必须为静态方法!! } }; ///一个完好的子类的示例 class DerivedClass : public Base<DerivedClass> { public: void implementationMethod() { std::cout << __FUNCTION__ << std::endl; } static void static_sub_func() { std::cout << __FUNCTION__ << std::endl; } }; ///没有实现所需方法的子类 class FalseDerivedClass : public Base<FalseDerivedClass> { }; ///虽然实现了所需方法,但不是基类的子类 class NotDerivedClass { public: void implementationMethod() { std::cout << __FUNCTION__ << std::endl; } static void static_sub_func() { std::cout << __FUNCTION__ << std::endl; } }; void main() { Base<FalseDerivedClass> base; //base.interfaceMethod(); //FalseDerivedClass 没实现该方法,编译自然就通不过 Base<NotDerivedClass> baseNot; //baseNot.interfaceMethod(); //NotDerivedClass 不是Base的子类,实现了该方法编译也通不过 DerivedClass derived; derived.interfaceMethod(); derived.static_func(); }
输出如下:
参考链接:
http://en.wikipedia.org/wiki/Curiously_Recurring_Template_Pattern
发表评论
-
C++函数中的静态变量
2019-07-19 11:22 760在C++中,可以在成员函数中使用静态变量,从而间接达到在hpp ... -
tensorflow 静态编译笔记 -- linux系统
2018-11-05 14:26 0注: 1、编译tensorflow静态库 很简单,参见: h ... -
gperftools笔记
2018-06-27 14:30 0export LD_LIBRARY_PATH=LD_LIBR ... -
dmlc分布式线性模型编译笔记
2018-06-06 10:37 21021、使用第三方修改后的wormhole工程 原始工程wor ... -
C++中读取控制台输出,并将文件指针FILE*转换为istream
2017-11-27 15:03 1706解决的问题: 1、通过执行系统的bash命令后,获取其输出( ... -
c++中使用boost库在共享内存中存储map
2017-11-09 11:37 5107boost库中的interprocess包可以在共享内存中创建 ... -
近似最近邻算法库FLANN
2017-04-25 18:45 0FLANN库是计算近似最近邻的库, 问题定义如下: 给定距离函 ... -
C++杂记-- 重定向std::cout等
2017-04-18 17:28 18871、屏蔽std::cout 参见:http://stackov ... -
CMake指定目标代码的平台(win32,x64)
2016-06-03 20:54 11521主要参考自:http://blog.c ... -
windows 10下安装GPU版MXNet
2016-06-03 21:28 8522上回说到编译CPU版的MXNet: http://cheris ... -
windows下安装CPU版mxnet
2016-05-23 23:14 17484MXnet (mix net)类似Caffe,Tensorfl ... -
Linux C++编译及 静态/动态 链接库 笔记
2015-12-20 19:49 59791、C++文件的编译 g++参 ... -
Linux (Ubuntu) 下 Eclipse C++ 环境配置
2015-12-08 21:49 19171、安装JDK 参见http://blog.csdn.net/ ... -
Photoshop插件开发-filter
2015-10-11 22:53 3308初学,,感觉PS插件的文档很烂,,教程也很少,,也就这么简单学 ... -
使Visual Assist X支持CUDA的.cu文件的代码提示
2015-07-17 00:05 2224现在安装CUDA很方便了,直接支持Visual Studio。 ... -
CUDA程序block和thread超出硬件允许值时的异常
2015-07-13 11:32 3678调用CUDA的核函数时指定block 和 thread大小,该 ... -
创建及使用DLL
2014-09-29 15:22 1193此篇仅作简要的记录,作为备忘。 更为详细的可以参考:http: ... -
matlab的mexFunction中使用std::cout(部分转载)
2014-09-27 15:37 2121在matlab、C++混合编程的时候,可能会用到之前的代码。代 ... -
Eigen库:那些年我们一起经历的bug
2014-09-24 18:39 17671、使用auto声明新变量 ... -
C++:无虚函数的类作为有虚函数类的父类时产生Expression:_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
2014-09-24 09:48 1898调程序时忘了为啥,写了一小段测试程序,再简单不过,结果跑出了E ...
相关推荐
while curiously giving you just enough technical details about viruses so you don’t feel like you’ve been cheated. Rather, this book is technical and to the point. Here you will find complete ...
What’s Inside Preface 1 Java SE5 and SE6 .................. 2 Java SE6 ............................................The 4th edition...........................Changes ...........................................
And yet, curiously, some guy seems to have come up with enough to say about Mac security to fill a rather thick and heavy book. How can that be? Are Macs really as insecure as other computers — and...
He broadcast from Concorde in its early days and he introduced us to the pocket calculator, microwave oven and the barcode (but curiously did not foresee the Internet). In several programmes, ...
该程序采用了Python的smtplib模块和pyqt5模块,实现了自动登录QQ邮箱的功能,并且支持向其他QQ邮箱或如网易邮箱等其他类型的邮箱发送文本邮件和附带文件的邮件。
2024年全球胚胎移植玻璃化冷冻介质行业总体规模、主要企业国内外市场占有率及排名
多式联运 (1)
sklearn中决策树算法进行泰坦尼克号人员幸存预测 有包的导入、数据处理、特征提取、预测结果等
编译原理实验报告(1和2)(可运行)
数据库第一次满分上机报告
j2se6.chm.zip
ins爬虫on工具,能够批量爬取ins资源
库房检测APP.apk
系统主要分员工管理员两个角色 管理模块具体有商品管理,部门员工管理,进货管理,订单管理,换货管理,供应商管理,供应商管理,客户管理,公告通知管理等模块,而员工模块具体由商品管理,进货管理,订单管理,供应商管理,客户管理,换货订单管理,公告通知管理等模块组成。 仓库管理信息系统所涉及的主要数据包括商品管理、进货管理、订单管理、换货管理和供应商管理,客户管理,公告通知管理下面分别分析这些数据需求。 (1)商品管理 商品管理主要是管理商品分类信息以及管理商品信息。 (2)进货管理 进货管理主要员工可以登记进货信息,以及查看我的进货记录,而管理员可以添加进货信息以及对进货信息的管理。 (3)订单管理 订单管理主要是对订单的一个统计,员工对销售的订单进行登记,管理员可以管理员工们的订单销售。 (4)换货管理 换货管理主要员工可以登记换货信息,以及查看我的换货记录,而管理员可以添加换货信息以及对换货信息的管理。 (5)供应商管理 管理员可以管理对他们厂家的供应商,来达到可以很好及时的跟供应商进行沟通。 (6)客户管理 管理员可以管理客户。对客户进行维护。
没有word只有图片,打印图片打印出来发黑怎么办?如何像打印doc一样清楚。教你一招搞定
matlab 独立分量分析 fastica,icaplot,remmean,whiten,盲源分离,去均值,白化处理.zip
文档Python双指针算法模板和题目同向相向快速排序归并排序提取方式是百度网盘分享地址
向天歌【简约扁平化】大学生实习社会实践报告.ppt
GEK气化炉sw18可编辑设计图纸.7z