`
tibaloga
  • 浏览: 865518 次
文章分类
社区版块
存档分类
最新评论

27 尽量少做类型转换——effective c++学习笔记

 
阅读更多

C++规则的设计目标之一是,保证“类型错误绝对不会发生”。

转型会破坏类型系统。

旧式转型风格:

(T)express

T(express)

新式转型:

<!--[if !supportLists]-->1、 <!--[endif]-->const_cast<T>(expression)

单一对象可能拥有一个以上的地址,分别是以基类指针指向和子类指针指向。

由于知道“对象如何布局”设计的转型可能在某一平台上可以,但是其他的平台上却不可以。

请记住:

<!--[if !supportLists]-->1、 <!--[endif]-->如果可以,尽量避免转型,特别是在注重效率的代码中避免dynamic_casts。如果有个设计需要转型动作,请考虑无需转型的替代方案。

<!--[if !supportLists]-->2、 <!--[endif]-->如果转型是必须的,试着将它隐藏于某个函数背后,客户随后可以调用该函数,而不需要将转型放到自己的代码中。

<!--[if !supportLists]-->3、 <!--[endif]-->宁可使用c++-style(新式转型),不要使用旧式转型。前者容易辨认出来,而且也比较有着分门别类的职掌。也就是,新式转型目标很窄。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics