考试网 >> IT认证 >> 水平 >> 程序员 >> C++箴言:将强制转型减到最少

C++箴言:将强制转型减到最少

发布时间:2006-06-28 02:47     点击:
分页:上一页  1 2 3 4 5 [6] 7  下一页

  class Window {

  public:

  virtual void blink() {} // default impl is no-op;

  ... // see Item 34 for why

  }; // a default impl may be

  // a bad idea   

  class SpecialWindow: public Window {

  public:

  virtual void blink() { ... }; // in this class, blink

  ... // does something

  };   

  typedef std::vector > VPW;   

  VPW winPtrs; // container holds

  // (ptrs to) all possible

  ... // Window types   

  for (VPW::iterator iter = winPtrs.begin();

  iter != winPtrs.end();

  ++iter) // note lack of

  (*iter)->blink(); // dynamic_cast

  无论哪种方法——使用类型安全的容器或在继承体系中上移虚函数——都不是到处适用的,但在很多情况下,它们提供了 dynamic_casting 之外另一个可行的候选方法。当它们可用时,你应该加以利用。

  你应该绝对避免的一件东西就是包含了极联 dynamic_casts 的设计,也就是说,看起来类似这样的任何东西:   

  class Window { ... };   

  ... // derived classes are defined here   

  typedef std::vector > VPW;   

  VPW winPtrs;   

  ...   

  for (VPW::iterator iter = winPtrs.begin(); iter != winPtrs.end(); ++iter)

  {

   if (SpecialWindow1 *psw1 = dynamic_cast(iter->get())) { ... }   

分页:上一页  1 2 3 4 5 [6] 7  下一页
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有