2022年6月11日记:王老师的春天,奇异的模板模式
推荐一个 零声学院 免费公开课程,个人觉得老师讲得不错,分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习]
后台服务器:https://course.0voice.com/v1/course/intro?courseId=5&agentId=0
DEMO1
template <typename T> class Base {public:void asDerived(){T& derived = static_cast<T&>(*this); derived.myfunc(); }private:Base() {};friend T; };class Derived1 : public Base<Derived1> {public:void myfunc(){cout << "Derived1::myfunc()执行了" << endl;}//......};
案例1中可以注意到,Base类中的 T& derived = static_cast<T&>(*this);这 写法有点怪异,至少我看着是有些奇怪,它是把模板T类型的变量放在Base类中,然后去调用T类型对象的函数,
Derived1 myd;
myd.asDerived(); //调用基类的成员函数
在main函数中调用是这样调用的,真的是看起来丈二和尚,让人摸不清头脑,非常的奇怪。
DEMO2
template<typename T>
struct shape
{//把派生类对象是否相等的判断挪到了基类中(使用了在类模板中定义友元函数的手段把全局的operator==放到基类中)friend bool operator==(const shape<T>& obj1, const shape<T>& obj2) //在类模板中定义友元{const T& objtmp1 = static_cast<const T&>(obj1);//派生类对象也是基类对象,所以这种静态类型转换没问题const T& objtmp2 = static_cast<const T&>(obj2);if (!(objtmp1 < objtmp2) && !(objtmp2 < objtmp1))return true;return false;}
};struct square : public shape<square>
{int sidelength; //边长
};//类外运算符重载
bool operator<(square const& obj1, square const& obj2)
{if (obj1.sidelength < obj2.sidelength){return true;}return false;
}
案例2是案例1的一个衍生品,但是里面加入了operator重载和友元方面的知识。这块知识先收藏下来,知道有这么个东西,等日后有时间或者突发奇想的时候也许可以用得上!
2022年6月11日记:王老师的春天,奇异的模板模式相关推荐
- 2022年3月11日记:Linux服务器开发,课程介绍
──────────────────────────────────────────────────────────────┌------------┐ │▉▉♥♥♥♥♥♥♥♥ 99% │ ♥❤ 鱼沈 ...
- 2022年9月11日:人生第一次相亲记录
记录时间:2022年9月11日11:56:01 前言: 交流过程 一. 交流过程,未对姑娘个人情况做详细询问,以下总结 二.对于姑娘主管提出的几个问题及答复 总体总结 总结个人情况短板: 个人总结: ...
- 2022年9月11日(星期天):(原创)骑行环草海
2022年9月11日(星期天):(原创)骑行环草海(南北两岸湿地公园逍遥游)早8:30到9:00大观公园门囗小广场集合,9:30准时出发 [因迟到者,骑行速度快者,可自行追赶偶遇.] 偶遇地点: 大 ...
- 2022年5月11日-12日 复盘计划
每日醒言 不要觉得身边人很水,如果你不水,怎么会在很水的人身边? 心累了,多想想自己的父母是如何含辛茹苦地养育自己那么多年! 如果还不够让自己站起来,那就多想想自己作为一个男子汉,却被一个女owner ...
- JAVAEE千锋教育第一天学习总结(2022年7月11日)
于2022年7月11日开始在前锋广州校区学习JAVAEE,并于今天开始写博客. 学习结束时间于2022年12月9日.为期5个月. 目的是为了完成每天总结作业--个人学习总结.以及5个月后回头看个人是否 ...
- Java学习笔记:2022年1月11日
Java学习笔记:2022年1月11日 摘要:这篇笔记主要讲解了一些数据在计算机中的存在方式相关的知识点,并由此延伸出了数据在计算机中的操作以及一些数据结构的知识. 文章目录 Java学习笔记:2 ...
- 2022年6月11日(星期六):骑行哈尼部落
2022年6月11日(星期六):骑行哈尼部落,早8:30到9:00,碧鸡社区停车场(西山地铁站后,牌坊坡头),9:30准时出发 [因迟到者,骑行速度快者,可自行追赶偶遇.] 偶遇地点:碧鸡社区停车场 ...
- 2022年5月27日记:Linux服务器开发,Darren老师,火焰图的生成原理与构建方式
──────────────────────────────────── 推荐一个 零声学院 免费公开课程,个人觉得老师讲得不错,分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Red ...
- 2022年4月12日记:Linux服务器开发,King,Nginx过滤器模块实现
──────────────────────────────────── ┌------------┐ │▉▉♥♥♥♥♥♥♥♥ 99% │ ♥❤ 鱼沈雁杳天涯路,始信人间别离苦. └--------- ...
最新文章
- 2022-2028年中国石油套管行业市场研究及前瞻分析报告
- 又一所“双一流”清退超33名博士生!今年已有超1300名硕博研究生被清退
- Opencv载入图片并显示的问题
- servlet的线程安全性问题
- java 自定义类加载器_Java-JVM 自定义类加载器
- 随手练——洛谷-P1008 / P1618 三连击(暴力搜索)
- dsm php,docker dsm是什么?
- 监控ajax上传进度
- 如何在 GitHub 上面精准搜索开源项目?
- 抗锯齿_《战地V》深度学习抗锯齿性能测试:对它最友好的竟然是4K
- 计算机组成原理第五版(白中英)第六章总线结构 习题
- 使用lombok时可以自定义get、set方法
- 固态硬盘用软件测试掉速严重,分析固态硬盘掉速原因及解决方法
- Declustered RAID
- Linux手动释放显卡内存
- 工业封装胶粘剂市场现状及未来发展趋势
- 对过去五年工作经历的总结
- Linux 源码分析 之 raw socket 分析 一 recvfrom过程
- 求值:空间向量的法向量
- 简单脚本测试--对谈式脚本@read