当前位置:  开发笔记 > 编程语言 > 正文

"奇怪的重复模板模式"的实际应用

如何解决《"奇怪的重复模板模式"的实际应用》经验,为你挑选了2个好方法。

" 奇怪的重复模板模式 "有哪些实际用途?通常显示的" 计数类 "示例对我来说并不是一个令人信服的例子.



1> moonshadow..:

模拟动态绑定.避免虚拟函数调用的成本同时保留一些分层优势是子系统的巨大胜利,它可以在我目前正在进行的项目中完成.



2> Steve Jessop..:

它对mixins也特别有用(我指的是你继承的类提供功能)它们自己需要知道它们在什么类型上运行(因此需要是模板).

Effective C++中,Scott Meyers提供了一个类模板NewHandlerSupport 作为示例.这包含一个静态方法来覆盖特定类的新处理程序(与std :: set_new_handler对默认运算符new的处理方式相同),以及使用处理程序的operator new.为了提供每类型处理程序,父类需要知道它所处理的类型,因此它需要是一个类模板.template参数是子类.

如果没有CRTP,你无法真正做到这一点,因为你需要单独实例化NewHandlerSupport模板,并使用一个单独的静态数据成员来存储当前的new_handler,每个使用它的类.

显然,整个示例非常非线程安全,但它说明了这一点.

迈耶斯认为,CRTP可能被认为是"为我而做".我会说任何mixin都是这种情况,而CRTP适用于需要mixin模板而不仅仅是mixin类的情况.

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有