码迷,mamicode.com
首页 > 编程语言 > 详细

effective c++学习笔记条款26-29

时间:2016-08-01 15:45:34      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

条款26:尽可能延后变量定义式的时间

1、中途抛出异常浪费构造函数

2、在循环内定义变量,消耗n个构造函数,n个析构函数;在循环外定义变量消耗n个赋值函数,1个构造,一个析构;

除非赋值的消耗比构造和析构少的不少,或者你处理的代码效率高度敏感,还是在循环内定义变量吧。

 

条款27:尽量少做转型动作

1、const_cast-----脱离常量属性,static_cast(隐式转换显示化),dynamic_cast(从一个寄放派生类的基类指针或引用调用派生类的成分),reinterpret_cats低级转换

2、static_cast<window>(*this).onReise()函数你可能以为他调用了对象基类的函数,实际上它调用的是对象基类副本的函数。应该用访问限定符来代替。

3、要从一个寄放派生类的基类指针或引用调用派生类的成分,你可能能设置一个容器存放一堆(基类的)智能指针的数组用来指向他们派生类的实际对象,然后调用dynamic_cast来访问实际对象的成分

  代替方法1、设置多个直接指向不同(派生类的)的智能指针来指向你可能要用到的多种深度的派生类对象【空间变大】

  代替方法2、运用在基类设置一个空的虚函数,【有时可能不是很好】

4、如果可以尽量不要使用转型,特别是在注重效率的代码中避免dynamic_cast,如果设计需要转型,试着向无需转型的方向转换

5、如果转型是必要的,试着将他隐藏于某个函数身后。客户随后可以调用这个函数,而不需将转型放置入他们的代码内。

6、使用c++新式转型,不要用旧式,新的分类清除。

 

effective c++学习笔记条款26-29

标签:

原文地址:http://www.cnblogs.com/7-29/p/5725723.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!