C++编程指南:从C到C++
需积分: 10 94 浏览量
更新于2024-08-02
收藏 604KB PDF 举报
"Effective C++中文版"
Effective C++中文版是一本非常不错的书,它为我们提供了从C转向C++的指南。书中指出,对于已经熟悉C的程序员来说,习惯C++需要一些时间,因为C是C++的子集,但很多用起来又不太合适。例如,C++程序员会认为指针的指针看起来很古怪,他们会问:为什么不用指针的引用来代替呢?
在C++中,宏、指针、结构、数组和函数当然还存在,此外还有私有和保护型成员、函数重载、缺省参数、构造和析构函数、自定义操作符、内联函数、引用、友元、模板、异常、名字空间等等。这些特性使得C++比C具有更宽广的空间,因为设计时有更多的选择可以考虑。
书中还提到,许多C程序员墨守成规,坚持他们的老习惯。这也不是什么很大的罪过。但某些C的习惯有悖于C++的精神本质,它们都在下面的条款进行了阐述。
条款1:尽量用const和inline而不用#define。这是因为#define经常被认为不是语言本身的一部分。例如,在下面的语句中:
#define ASPECT_RATIO 1.653
编译器会永远也看不到ASPECT_RATIO这个符号名,因为在源码进入编译器之前,它会被预处理程序去掉,于是ASPECT_RATIO不会加入到符号列表中。如果涉及到这个常量的代码在编译时报错,就会很令人费解,因为报错信息指的是1.653,而不是ASPECT_RATIO。如果ASPECT_RATIO不是在你自己写的头文件中定义的,你就会奇怪1.653是从哪里来的,甚至会花时间跟踪下去。
解决这个问题的方案很简单:不用预处理宏,定义一个常量:
const double ASPECT_RATIO = 1.653;
这种方法很有效。但有两个特殊情况要注意。首先,定义指针常量时会有点不同。因为常量定义一般是放在头文件中(许多源文件会包含它),除了指针所指的类型要定义成const外,重要的是指针也经常要定义成const。例如,要在头文件中定义一个基于char*的字符串常量,你要写两次const:
const char* const a
这本书为我们提供了许多有价值的建议和经验,让我们更好地理解C++的特性和使用方法。
2013-10-04 上传
2017-10-07 上传
2018-12-03 上传
2009-08-08 上传
2007-04-17 上传
2024-12-01 上传
2024-12-01 上传
2024-12-01 上传
2024-12-01 上传
zhujunguohit
- 粉丝: 0
- 资源: 1
最新资源
- 基于protues仿真的市电转±15 ±5V输出电源仿真系统(提供仿真图)
- STM32智能小车红外避障+空气环境监测(温湿度,可燃性气体)基于库函数程序源代码.rar
- kindle-clips:使用 My Clippings.txt 导出亮点和注释
- 基于java的-170-springboot医院信管系统--LW-源码.zip
- 多输入多输出神经网络程序包含原始文件,自定义函数和数据集
- 100dayscode-1st-day:#100DaysOfCode挑战的第一个项目
- java基于SpringBoot+vue 健身房管理系统源码 带毕业论文
- 纯winfrom的分页控件
- 学期论文 - 标红-论文.zip
- Enum Return Message
- 关于用于校准内置于车辆中的传感器的方法的介绍说明.rar
- TiddlyDrive:与Google Apps兼容脚本同步的插件
- hatch-connector:舱口盖连接器
- 基于java的-158-springboot家政服务管理平台--LW-源码.zip
- Captura录屏工具+ffmepg插件
- univesp_com130:互联网和WEB的基础知识