c/c++语言开发共享C++设计模式之应用(型别对型别的映射) 实例讲解

现在假如说我们有一个通用的函数create用于来创建对象,但是对于某些特殊的类来说,创建方式又有所不同(参数不同),这里我们假设所有的类都继承自animal类,person类也同样如此,但是pers

现在假如说我们有一个通用的函数create用于来创建对象,但是对于某些特殊的类来说,创建方式又有所不同(参数不同),这里我们假设所有的类都继承自animal类,person类也同样如此,但是person类的初始化方式比anima类多了一个参数(这个参数是个常数)这个时候,解决方式有两种:

首先来看第一种:

  template  t *create(u args,t ){};  template  t *create(u args,person ){};

这里对create进行重载,唯一的区分是第二个函数的第二个参数类型必须是person类型,但是你注意到没,当你调用第二个的时候,虽然起到了区分的作用,但是你需要传递进来一个构造的具体对象,虽然这个对象你并不需要,这会造成性能问题,所以鉴于此,便有了下面的改进版本。

  template   struct type2type{   typedef t typedt;  };    template  t *create(u args,type2type){};  template  t *create(u args,type2type ){};

这里定义了一个新的结构体type2type,这个结构体中不存在元素,所以没有开销,但是能够区分不同的方法调用,这已经足够了,不是么。

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/607536.html

(0)
上一篇 2021年5月14日
下一篇 2021年5月14日

精彩推荐