博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多态的静态绑定(CRTP手法)
阅读量:7184 次
发布时间:2019-06-29

本文共 493 字,大约阅读时间需要 1 分钟。

hot3.png

Curiously Recurring Template Pattern (CRTP手法)

原理很简单

通过模板函数 的强制转换调用子类同名函数,来模拟多态的动态绑定,实现和虚函数一样的功能,并且避免了动态绑定所带来的性能开销

template 
class A{public: void func(){ ((T*)this)->funcImpl(); }; void funcImpl(){}};class B:public A
{public: void funcImpl(){ cout << __FUNCTION__ << endl; }};int main(int argc, char *argv[]){ A *a = new B; a->func(); system("pause"); return 0;}

虽然模拟了一部分场合的虚函数的功能,但也不能完全替代虚函数来实现多态,因为这是模板,子类类型早已经决定了,有点类似语法糖

 

 

转载于:https://my.oschina.net/kkkkkkkkkkkkk/blog/678648

你可能感兴趣的文章
百度没出新算法之前这样的最好的的优化方案
查看>>
free 一个指针时【 retval = HeapFree(_crtheap, 0, pBlock);】报错的原因
查看>>
网易微专业大数据工程师
查看>>
查看、修改oracle字符集,查看oracle版本
查看>>
JavaScript引用类型之Array数组的栈方法与队列方法
查看>>
ASP.NET Core 中文文档 第四章 MVC(3.8)视图中的依赖注入
查看>>
路由器实操 能够登陆QQ 收发信息正常 但游览器无法连接网页
查看>>
vi实战记录
查看>>
less初探
查看>>
关于SQL中的Update语句
查看>>
五、excel末尾补0和开头补0
查看>>
jquery中使用event.target的几点
查看>>
Hybird-App离线缓存系统
查看>>
探索两种优雅的表单验证——策略设计模式和ES6的Proxy代理模式
查看>>
Linux系统如何低于TCP洪水攻击
查看>>
【117天】尚学堂高琪Java300集视频精华笔记(13-17)
查看>>
redis数据迁移
查看>>
NodeJS文档之Module(1)-Module的简介
查看>>
使用User authentication and permissions
查看>>
Yii2 数据库复制和读写分离
查看>>