设为首页 加入收藏

TOP

C++设计模式之应用(型别对型别的映射) 实例讲解
2018-06-22 08:53:40 】 浏览:202
Tags:设计模式 应用 别对型 别的 映射 实例 讲解

现在假如说我们有一个通用的函数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,这个结构体中不存在元素,所以没有开销,但是能够区分不同的方法调用,这已经足够了,不是么。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇小项目之将所有注释风格全部转换.. 下一篇如何用C++做游戏

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目