More Effective C++ 读书笔记
江淮猫
一生只为寻找欢笑,编码永无止步。
展开
-
条款2:最好使用C++转型操作符
旧式的C语言转型方式,是存在缺点的,主要在一下两个方面:1.它几乎允许你将任何类型转换为任何其它类型。2.转型是难以识别的。旧式转型的语法结构是由一对小括号加上一个对象名称组成,而小括号和对象名称在C++的任何地方都有可能被使用。为了解决C旧式转型的特点,C++引入4个新的转型操作符(cast operators):static_cast, const_cast, dynamic_ca原创 2015-01-29 10:51:38 · 633 阅读 · 0 评论 -
条款3:绝对不要以多态(polymorphically)方式处理数组
继承的最重要特性之一就是,你可以通过指向基类的指针或者引用来操作派生类对象。但是,如果你通过基类指针或者引用来操作派生类所形成的数组,它绝对不会按你预期地运行。例子://BalancedBST继承于BST类void printBSTArray(ostream& s, const BST array[], int numElements){ for(int i = 0; i < numEl原创 2015-01-29 19:09:37 · 725 阅读 · 1 评论 -
条款4:非必要不提供default constructor
初次看到这个标题有点费解,看完这一节内容,自我理解是不是必要的情况就不要提供默认构造函数,建议不要随便提供构造函数。后来,查看了英文版的标题是:“Avoid gratuitous default constructor's.”,感觉意思也差不多。 默认构造函数可以初始化基本类型的成员变量,但是自定义的类型就不能正确初始化了。在这种情况下,需要我们自定义构造函数。但是,如果我们缺少原创 2015-02-05 20:02:07 · 924 阅读 · 0 评论 -
条款1:仔细区别Pointers和References
指针和引用看起来很不一样,指针使用*和->操作符,引用则使用.操作符,但是它们似乎做的是类似的事情。 首先,需求确认的是,C++用没有空引用(null reference),一个引用必须总代表某个对象,所以既不能指向null,也不能声明变量时不赋初值,也不能在使用过程中改变指向(其实用引用更贴切)值。如果不能满足上述条件,可以考虑使用指针。 使用引用可能比指针更原创 2015-01-26 11:34:23 · 756 阅读 · 0 评论