C++编程:从C到C++的过渡与最佳实践
需积分: 9 96 浏览量
更新于2024-07-26
收藏 523KB PDF 举报
"Effective_C++中文版.pdf" 是一本关于C++编程实践的书籍,旨在帮助程序员从C语言过渡到C++,并充分利用C++的高级特性。书中指出,虽然C是C++的子集,但C++提供了更多如私有和保护型成员、函数重载、缺省参数、构造和析构函数等机制,使得C++的设计选择更加广泛。作者强调了避免将C的习惯带入C++的重要性,并以条款的形式列出了一些应当遵循的建议。
条款1:尽量用const和inline而不用#define
在C++中,避免使用预处理宏#define来定义常量或函数,而是推荐使用const关键字和inline函数。预处理宏可能导致错误难以追踪,因为它们会在编译之前被替换,导致在错误信息中显示原始的文本而非宏名。例如,使用#define定义的常量ASPECT_RATIO在编译错误中会出现为1.653,而非ASPECT_RATIO,给调试带来困扰。使用const定义常量则能解决这一问题,常量会作为符号加入到编译器的符号表中,便于调试。
然而,定义const指针需要注意,特别是当常量定义在头文件中时。为了确保指针本身不可变,同时指针指向的内容也不可变,需要两次使用const关键字。例如,定义一个不可变的字符指针常量,正确的方式是:
```cpp
const char* const author = "作者的名字";
```
这里,`const char*` 指向的是不可修改的字符,`const` 后面的`*`表示指针本身也是常量,不能改变指向。
C++的const和inline特性不仅有助于提高代码的可读性和可维护性,还可以让编译器进行更多的优化。inline用于声明内联函数,可以避免函数调用的开销,但是否内联最终由编译器决定。在某些情况下,预处理宏可能仍有其用途,但应谨慎使用,特别是在定义行为类似于函数的宏时,避免产生未预期的副作用。
Effective C++鼓励程序员充分利用C++的现代特性,如const、inline以及类、模板等,以写出更高效、更安全的代码。这本书通过一系列的条款,引导开发者走出C的思维定势,适应C++的面向对象和泛型编程理念。
2017-10-14 上传
2019-05-25 上传
2018-06-27 上传
2011-07-11 上传
2019-07-07 上传
2008-08-08 上传
2010-05-26 上传
2023-06-25 上传
cao542190156
- 粉丝: 0
- 资源: 16
最新资源
- Aspose资源包:转PDF无水印学习工具
- Go语言控制台输入输出操作教程
- 红外遥控报警器原理及应用详解下载
- 控制卷筒纸侧面位置的先进装置技术解析
- 易语言加解密例程源码详解与实践
- SpringMVC客户管理系统:Hibernate与Bootstrap集成实践
- 深入理解JavaScript Set与WeakSet的使用
- 深入解析接收存储及发送装置的广播技术方法
- zyString模块1.0源码公开-易语言编程利器
- Android记分板UI设计:SimpleScoreboard的简洁与高效
- 量子网格列设置存储组件:开源解决方案
- 全面技术源码合集:CcVita Php Check v1.1
- 中军创易语言抢购软件:付款功能解析
- Python手动实现图像滤波教程
- MATLAB源代码实现基于DFT的量子传输分析
- 开源程序Hukoch.exe:简化食谱管理与导入功能