编写高质量代码:改善C++程序的150个建议.pdf

编写高质量代码:改善C++程序的150个建议.pdf

ID:50225770

大小:2.20 MB

页数:94页

时间:2020-03-05

编写高质量代码:改善C++程序的150个建议.pdf_第1页
编写高质量代码:改善C++程序的150个建议.pdf_第2页
编写高质量代码:改善C++程序的150个建议.pdf_第3页
编写高质量代码:改善C++程序的150个建议.pdf_第4页
编写高质量代码:改善C++程序的150个建议.pdf_第5页
资源描述:

《编写高质量代码:改善C++程序的150个建议.pdf》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第一部分语法篇本部分内容第1章从C继承而来的第2章从C到C++,需要做出一些改变第3章说一说“内存管理”的那点事儿第4章重中之重的类第5章用好模板,向着GP开进第6章让神秘的异常处理不再神秘第7章用好STL这个大轮子第1章从C继承而来的C和C++可以说是所有编程语言中关系最为紧密的两个。在目标上,C++被定位为“abetterC”;在名称上,C++有一个乳名叫做“Cwithclasses”;在语法上,C更是C++的一个子集,C++几乎支持C语言的全部功能。如果采用C++的方法来描述,以下方式恰如其分:classC{};classCPlus

2、Plus:publicC{};C++继承自C。正是这种难以割舍的紧密联系使得C/C++程序员必须对C有所重视。所以,本章就从C++的前身—C语言说起。在开始这段学习旅程前,先分享一个只有程序员才明白的幽默:有一次,她开玩笑似地问他:“我在你心里排第几?”他回头微笑着摸了摸她的头,用手指比划了个鸭蛋。她知道他在开玩笑,打了他一巴掌,尽管有些郁闷,但还是尽量避免流露出失望的神色。其实,因为她是文科生,所以她并不知道:在程序员的眼中,所有的数组、列表、容器的下标都是从0开始的。所以,我们的建议也从0开始。建议0:不要让main函数返回void同

3、C程序一样,每个C++程序都包含一个或多个函数,而且必须有一个函数命名为main,并且每个函数都由具有一定功能的语句序列组成。操作系统将main作为程序入口,调用main函数来执行程序;main函数执行其语句序列,并返回一个值给操作系统。在大多数系统中,main函数的返回值用于说明程序的退出状态。如果返回0,则代表main函数成功执行完毕,程序正常退出,否则代表程序异常退出。然而在编写C++程序入口函数main的时候,很多程序员,特别是一些具有C基础的C++程序员时经常会写出如下格式的main函数:voidmain(){//somecod

4、e...}第1章从C继承而来的3上述代码在VC++中是可以正确编译、链接、执行的。编译信息如下所示:1>------已启动生成:项目:MainCpp,配置:DebugWin32------1>main.cpp1>MainCpp.vcxproj->G:MainCppDebugMainCpp.exe==========生成:成功1个,失败0个,最新0个,跳过0个==========但是当你将代码放在Linux环境下,采用GCC编译器进行编译时,你会吃惊地发现编译器抛出了如下的错误信息:[develop@localhost~]g++mai

5、n.cppmain.cpp:2:错误:'::main'必须返回'int'为什么同样的代码会出现两种不同的结果呢?这还是跨平台的C/C++语言吗?不要对C/C++的跨平台性产生质疑,之所以会这样,很大程度上要归结于市面上一些书的“误导”,以及微软对VC++编译器main返回值问题的过分纵容。在C和C++中,不接收任何参数也不返回任何信息的函数原型为“voidf(void);”。所以很多人认为,不需要程序返回值时可以把main函数定义成voidmain(void),然而这种想法是非常错误的!有一点你必须明确:在C/C++标准中从来没有定义过v

6、oidmain()这样的代码形式。C++之父BjarneStroustrup在他的主页FAQ中明确地写着这样一句话:在C++中绝对没有出现过voidmain(){/*...*/}这样的函数定义,在C语言中也是。main函数的返回值应该定义为int类型,在C和C++标准中都是这样规定的。在C99标准中规定,只有以下两种定义方式是正确的:intmain(void)intmain(intargc,char*argv[])在C++03中也给出了如下两种main函数的定义方式:intmain()intmain(intargc,char*argv[]

7、)虽然在C和C++标准中并不支持voidmain(),但在部分编译器中voidmain()依旧是可以通过编译并执行的,比如微软的VC++。由于微软产品的市场占有率与影响力很大,因此在某种程度上加剧了这种不良习惯的蔓延。不过,并非所有的编译器都支持voidmain(),gcc就站在了VC++的对立面,它是这一不良习气的坚定抵制者,它会在编译时就明确地给出一个错误。如果你坚持在某些编译器中使用voidmain()这种非标准形式的代码,那么当你把程序从参考资料:ISO/IEC9899:1999(E)Programminglanguages—C5

8、.1.2.2.1Programstartup。参考资料:ISOC++033.6.1Mainfunction。4第一部分语法篇一个编译器移植到另一个编译器时,你就要对可能出现的错误负责。除了有v

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。