黑马程序员c语言教程一定要知道的c条款之前十个

黑马程序员c语言教程一定要知道的c条款之前十个

ID:34504503

大小:32.49 KB

页数:12页

时间:2019-03-07

黑马程序员c语言教程一定要知道的c条款之前十个_第1页
黑马程序员c语言教程一定要知道的c条款之前十个_第2页
黑马程序员c语言教程一定要知道的c条款之前十个_第3页
黑马程序员c语言教程一定要知道的c条款之前十个_第4页
黑马程序员c语言教程一定要知道的c条款之前十个_第5页
资源描述:

《黑马程序员c语言教程一定要知道的c条款之前十个》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、条款01:视C++为一个语言联邦   为了更好的理解C++,我们将C++分解为四个主要次语言:·C。说到底C++仍是以C为基础。区块,语句,预处理器,内置数据类型,数组,指针统统来自C。·Object-OreintedC++。这一部分是面向对象设计之古典守则在C++上的最直接实施。类,封装,继承,多态,virtual函数等等...·TemplateC++。这是C++泛型编程部分。·STL。STL是个template程序库。容器(containers),迭代器(iterators),算法(algorithms)以及函数对象(function

2、objects)...   请记住:·这四个次语言,当你从某个次语言切换到另一个,导致高效编程守则要求你改变策略。C++高效编程守则视状况而变化,取决于你使用C++的哪一部分。    条款02:尽量以const,enum,inline替换#define    这个条款或许可以改为“宁可以编译器替换预处理器”。即尽量少用预处理。    编译过程:.c文件--预处理-->.i文件--编译-->.o文件--链接-->bin文件   预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。检查包含预处理指令的语句和宏定义,并对源代码

3、进行相应的转换。预处理过程还会删除程序中的注释和多余的空白字符。可见预处理过程先于编译器对源代码进行处理。预处理指令是以#号开头的代码行。    例:#define ASPECT_RATIO1.653   记号名称ASPECT_RATIO也许从未被编译器看见,也许在编译器开始处理源代码之前它就被预处理器移走了。即编译源代码时ASPECT_RATIO已被1.653取代。ASPECT_RATIO可能并未进入记号表(symboltable)。    替换:const doubleAspectRatio=1.653;    好处应该有:多了类型检

4、查,因为#define只是单纯的替换,而这种替换在目标码中可能出现多份1.653;改用常量绝不会出现相同情况。    常量替换#define两点注意:·定义常量指针:    const char*authorName=“Shenzi”;      cosnt std::stringauthorName("Shenzi");·类专属常量:     staticconst intNumTurns=5;//static静态常量所有的对象只有一份拷贝。   万一你编译器不允许“static整数型class常量”完成“incalss初值设定”(即在

5、类的声明中设定静态整形的初值),我们可以通过枚举类型予以补偿:     enum {NumTurns=5};    *取一个const的地址是合法的,但取一个enum的地址就不合法,而取一个#define的地址通常也不合法。如果你不想让别人获取一个pointer或reference指向你的某个整数常量,enum可以帮助你实现这个约束。    例:#define CALL_WITH_MAX(a,b)   f((a)>(b))?(a):(b))   宏看起来像函数,但不会招致函数调用带来的额外开销,而是一种简单的替换。    替换:     

6、template      inline voidcallWithMax(cosntT&a,cosntT&b)    {         f(a>b?a:b);      }     callWithMax是个真正的函数,它遵循作用于和访问规则。     请记住:·对于单纯常量,最好以const对象或enums替换#defines;·对于形似函数的宏,最好改用inline函数替换#defines。          条款03:尽可能使用const    const允许你告诉编译器和其他程序员某值应保持不变,只要“某值

7、”确实是不该被改变的,那就该确实说出来。    关键字const多才多艺:    例:       chargreeting[]="Hello";      char*p=greeting;   //指针p及所指的字符串都可改变;       const char*p=greeting;   //指针p本身可以改变,如p=&Anyother;p所指的字符串不可改变;      char* cosnt p=greeting;   //指针p不可改变,所指对象可改变;      const char* const p=greeting;   

8、//指针p及所致对象都不可改变;     说明:·如果关键字const出现在星号左边,表示被指物事常量。constchar*p和charconst*p两种写法意义一样,都说明所致对象为常量;·

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

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

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