推荐一个 零声学院 免费公开课程,个人觉得老师讲得不错,分享给大家:[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日记:王老师的春天,奇异的模板模式相关推荐

  1. 2022年3月11日记:Linux服务器开发,课程介绍

    ──────────────────────────────────────────────────────────────┌------------┐ │▉▉♥♥♥♥♥♥♥♥ 99% │ ♥❤ 鱼沈 ...

  2. 2022年9月11日:人生第一次相亲记录

    记录时间:2022年9月11日11:56:01 前言: 交流过程 一. 交流过程,未对姑娘个人情况做详细询问,以下总结 二.对于姑娘主管提出的几个问题及答复 总体总结 总结个人情况短板: 个人总结: ...

  3. 2022年9月11日(星期天):(原创)骑行环草海

    2022年9月11日(星期天):(原创)骑行环草海(南北两岸湿地公园逍遥游)早8:30到9:00大观公园门囗小广场集合,9:30准时出发 [因迟到者,骑行速度快者,可自行追赶偶遇.]  偶遇地点: 大 ...

  4. 2022年5月11日-12日 复盘计划

    每日醒言 不要觉得身边人很水,如果你不水,怎么会在很水的人身边? 心累了,多想想自己的父母是如何含辛茹苦地养育自己那么多年! 如果还不够让自己站起来,那就多想想自己作为一个男子汉,却被一个女owner ...

  5. JAVAEE千锋教育第一天学习总结(2022年7月11日)

    于2022年7月11日开始在前锋广州校区学习JAVAEE,并于今天开始写博客. 学习结束时间于2022年12月9日.为期5个月. 目的是为了完成每天总结作业--个人学习总结.以及5个月后回头看个人是否 ...

  6. Java学习笔记:2022年1月11日

    Java学习笔记:2022年1月11日 ​ 摘要:这篇笔记主要讲解了一些数据在计算机中的存在方式相关的知识点,并由此延伸出了数据在计算机中的操作以及一些数据结构的知识. 文章目录 Java学习笔记:2 ...

  7. 2022年6月11日(星期六):骑行哈尼部落

    2022年6月11日(星期六):骑行哈尼部落,早8:30到9:00,碧鸡社区停车场(西山地铁站后,牌坊坡头),9:30准时出发 [因迟到者,骑行速度快者,可自行追赶偶遇.]  偶遇地点:碧鸡社区停车场 ...

  8. 2022年5月27日记:Linux服务器开发,Darren老师,火焰图的生成原理与构建方式

    ──────────────────────────────────── 推荐一个 零声学院 免费公开课程,个人觉得老师讲得不错,分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Red ...

  9. 2022年4月12日记:Linux服务器开发,King,Nginx过滤器模块实现

    ──────────────────────────────────── ┌------------┐ │▉▉♥♥♥♥♥♥♥♥ 99% │ ♥❤ 鱼沈雁杳天涯路,始信人间别离苦. └--------- ...

最新文章

  1. 2022-2028年中国石油套管行业市场研究及前瞻分析报告
  2. 又一所“双一流”清退超33名博士生!今年已有超1300名硕博研究生被清退
  3. Opencv载入图片并显示的问题
  4. servlet的线程安全性问题
  5. java 自定义类加载器_Java-JVM 自定义类加载器
  6. 随手练——洛谷-P1008 / P1618 三连击(暴力搜索)
  7. dsm php,docker dsm是什么?
  8. 监控ajax上传进度
  9. 如何在 GitHub 上面精准搜索开源项目?
  10. 抗锯齿_《战地V》深度学习抗锯齿性能测试:对它最友好的竟然是4K
  11. 计算机组成原理第五版(白中英)第六章总线结构 习题
  12. 使用lombok时可以自定义get、set方法
  13. 固态硬盘用软件测试掉速严重,分析固态硬盘掉速原因及解决方法
  14. Declustered RAID
  15. Linux手动释放显卡内存
  16. 工业封装胶粘剂市场现状及未来发展趋势
  17. 对过去五年工作经历的总结
  18. Linux 源码分析 之 raw socket 分析 一 recvfrom过程
  19. 求值:空间向量的法向量
  20. 简单脚本测试--对谈式脚本@read

热门文章

  1. 2022年认证杯SPSSPRO杯数学建模B题唐宋诗的定量分析与比较研究程序
  2. 利用矩阵解多元一次方程
  3. 《数字语音处理》- 1. 基于MATLAB的语音信号时域特征分析
  4. ubuntu 18使用国内版firefox
  5. 【5G核心网】5G Non 3GPP接入-N3IWF
  6. 第三十三篇,网络编程TCP协议通讯过程实现和函数接口
  7. mysql查询并计算单价,sql语句查询今年单价总金额
  8. 浅析YUV422模式
  9. R语言的几何平均数,调和平均数,平方平均数
  10. 百年孤独人物脉略简介