![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
More Effective C++读后感
村中小码哥
喜欢交流代码的乡村死宅。
展开
-
2.尽量使用C++风格的类型转换
1.使用C++风格的类型转换的原因 在C++中,许多用惯了C的人还是喜欢用那种普通的类型转换。因为简单又方便。那为什么还要推出C++风格的类型转换呢? (1). 以偏概全 举个简单的例子,C++中有类的知识点,两个类之间的对象(变量)怎么进行转换? (2原创 2015-02-12 00:35:03 · 388 阅读 · 0 评论 -
4.非必要不提供default constructor
注:不必要提供default constructor不代表没有constructor。缺乏default constructor可能产生的问题:1.无法产生数组Class T[10]; //错误的,无法调用default constructor 一般的解决办法是使用指针数组,即10个类对象的指针。Class *T[10];Class *T = new原创 2015-02-24 22:29:14 · 427 阅读 · 0 评论 -
6.区别increment/decrement操作符的前置和后置形式
常见的前置和后置形式有++,在重载前置和后置的++时,为了区分后置的++调用的operator++(0),而前置的则没有0: operator++()。 前置后置重载函数的返回对象应该为const,因为要防止i++++;这样的语句出现,相当于调用了i.operator().operator(),第二个opertator所改变的对象是第一个operator返回的对象,而不是原对象。也就是原创 2015-02-26 15:46:37 · 347 阅读 · 0 评论 -
1.指针和引用的区别
在学习这本书的过程中自己并不是对知识点理解得很透彻,毕竟我没有参加过一些项目,只是自己随便写写代码。可能没有太多的醍醐灌顶的时候,写下这篇文章是希望能给自己总结的同时能帮助一些对C++感兴趣的朋友,对于文章中不正确的地方希望大家能够多多指正。 1.引用必须要初始化 一般来说在创建指针的时候是可以不用赋值的,没有赋值的指针在编译的是可以通过的,只不过会产生一个警告提示原创 2015-02-11 01:45:14 · 782 阅读 · 0 评论 -
5.对定制的“类型转换函数”保持警觉
编译器通常会自动执行隐式类型转换,害处将多过好处。所以不要提供转换函数。 1.隐式类型转换操作符在类中声明的格式为operator + 关键字类型(); 例: class Student{ public: operator char( );} 这样你就相当于提供了能隐式转换为char的类型。但我们最好不要提供这样的转换函数,原创 2015-02-25 19:09:34 · 250 阅读 · 0 评论 -
7.千万不要重载&& | | 和“,”操作符
如果重载&&或||,则会影响到“骤死式”,“骤死式”是指当用&&、 ||这些操作符时,默认为b b如果前面的b b是否正确。 如果重载&&,则表达式为operator&&(expreesion1, expreesion2)则无法确定谁判断哪个参数。 逗号表达式也是如此,如(a = 1, b = 2),从左往右执行,如果你重载了逗号表达式,则无法确定哪个参数先执行。原创 2015-02-28 16:11:26 · 293 阅读 · 0 评论 -
3.绝对不要以多态方式处理数组
主要的原因是数组涉及到指针算术。 如果一个派生类数组进入一个以基类数组为形参的输出函数中,要用到for循环将每个derived[i]遍历,但编译器实际遍历的格式是按基类输出的,也就是base[1]..base[2],而不是derived[1]..derived[2],这样就会出错,在一些释放内存的时候也会发生这样的事。原创 2015-02-13 20:00:34 · 443 阅读 · 0 评论 -
8.了解各种不同意义的new和delete
new operator和 operator new的区别 通常我们使用的new是new operator。不能改变其意义。new operator做两件事。1、分配足够放置对象的内存。2、调用一个constructor,为刚才分配的内存中那个对象设定初值。 operator new的声明如下: void *operator new(size_t size); 我们可以重载这个ne原创 2015-03-01 14:43:39 · 350 阅读 · 0 评论