设为首页 加入收藏

TOP

4.6.2 使用更加困难
2013-10-07 15:03:54 来源: 作者: 【 】 浏览:70
Tags:4.6.2 使用 更加 困难

4.6.2  使用更加困难

效率通常会制约程序使用的容易性。假设我们的程序库用户需要一个函数,它返回所给节点的入射边集合;那么,最优雅的接口将会返回一个包含Edge对象的Set集合:

  1. template<class T> 
  2. class Node {  
  3. public:  
  4.      Set<Edge<T>*> incident_edges() const;  
  5.      //...  
  6.    };  

如果Node类是用Incedges类实现的,那么incident_edges函数的实现就必须进行一次转型:
  1. template<class T> 
  2. Set<Edge<T>*>Node<T>::incident_edges()  const  {  
  3.      //把Incedges对象转型为Set对象。  
  4.      //...  
  5. };  

而当使用Set类来实现Node类时,我们并不需要这样的转型。

另一种实现方法是,我们可以把类Incedges转移到程序库的接口中,即让Node::incident_edge函数返回一个Incedges对象:而不是一个Set对象;这样我们就可以不进行转型,从而减少了由转型带来的运行时间开销:

  1. template<class T> 
  2.   class Node {  
  3.   public:  
  4.        Incedges<T> incident_edges() const {  
  5.             return incedges;  
  6.        }  
  7.   private:  
  8.        Incedeges<T> incedges;  
  9.        //...  
  10.   };  

遗憾的是,我们的程序库现在变得更难使用了。用户现在必须知道具有特殊用途的类Incedges;而且,用户代码的编写也变得更加困难;就如前面小节的is_adjacent函数一样,incident_edges函数的编写也变得更加困难了。
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇4.4.2 虚函数 下一篇4.6.1 实现更加困难

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: