《Effective C++》笔记

本文是《Effective C++》的读书笔记,强调从C转向C++时应注意的编程习惯,如使用const和inline代替#define,采用< iostream>而非< stdio.h>,使用new和delete进行内存管理,以及在析构函数中正确处理指针。此外,还讨论了内存管理中的注意事项,如new和delete的一致性,以及如何避免内存泄漏。
摘要由CSDN通过智能技术生成

从C转向C++

条款1:尽量用const和inline而不用#define

  • 少用define定义某个常量。在调试时编译器永远不会看到被define的那个数据,影响调试效率。应将“#define PI 3.14”改为“const double PI = 3.14”,性能相差无几,在类型安全上更可靠。但是注意,若要定义一个指针型常量,需要写两个const,比如const char * const authorName = “Scott Meyers”;
  • 少用define实现类似函数的功能。一是涉及到类型安全问题,编译器不会去检查“参数”的类型,二是可能出现函数重复运行的问题。例如max(++a,b),a的值增加了两次,而max(++a,b+10)则正常。

条款2:尽量用< iostream>代替< stdio.h>

  • 对cunt,cin的流操作相对于printf、scanf不用考虑变量类型、取地址等问题(scanf并不会检查参数是不是地址)。
  • 使用< iostream>而不是< iostream.h>。前者的命名空间是std,后者的则是全局,后者容易引起命名冲突。

条款3:尽量用new和delete而不用malloc和free

  • 后者不会激活类的构造函数和析构函数
  • 后者不会自动判断变量需要的内存空间,比如为字符串分配空间的时候
  • 千万不要把前者和后者混用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值