关注“爱当程序员的我”,每天都有关于编程头条发布 本文涉及到了C++中的模板类、继承、操作符重载等知识点。 编译工具:Visual Studio 2015 开门见山,小编先阐述一下题意:实现一个模板类Comparable,要求根据如下子类Height和Weight中重载的“<”操作符,能够实现调用两子类对象比较“>”、“≥”、“≤”、“==”和“!=”操作符。 模板类代码框架如下:
两子类代码(不可更改)如下:
图1 两结构体Height和Weight 如上,大家可以理解题意了嘛?如果还是不可以,我们再看一下主函数(不可更改):
图2 主函数 如上,我们需要在Comparable模板类中实现一些操作符重载函数,以保证子类Height和Weight能够调用该操作符,而我们所拥有的只有子类中的“<”操作符。完成这个编程题我们需要考虑以下问题:
图3 继承结构分析 接下来我们首先解决第一个问题,分析如下(也可直接看图4):
图4 逻辑详解 第一个问题很简单,那么第二个问题要如何解决呢?
那么我们是否可以将this指针强制类型转换成Derived*类型去调用“<”操作符呢?
图5 最终代码 代码如上,大家认为小编的代码编译可以通过嘛?运行结果又如何呢?
图6 运行结果 事实证明,this指针可以强制类型转换成模板参数的对象。(其他操作符逻辑已分析过,可参照图4) 结束语: 如果喜欢这篇头条,一定要收藏哟^O^ 点击关注,了解更多关于编程的知识^O^ 如果有不懂的地方,可以留言,相互探讨,相互学习,共同进步^O^ |
| 本文出处: http://www.toutiao.com/a6409871089518100738/ |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|