第九章 杂项讨论
2014-08-11 22:18
246 查看
第一个条款强调不可以轻忽编译器警告信息。至少,如果你希望你的软件有适当行为的话,别太轻忽它们。第二条款带你综览C++标准程序库,其中覆盖有TR1引进的重大新机能。最后一个条款带你综览Boost,那是我认为最重要的一个C++泛用型网站。
更加深入的理解,你说呢?下面我举的这个例子是多多少少在大部人身上都发生过一个错误:
C++ Code
我现在的编译器给出了这样的警告信息:warning:D::f()hides virtual B::f()
大部分经验不足的程序员对这个信息的反映都是一副不以为然的态度,他们认为,D::f遮掩了B::f显然是发生了名字遮掩现象,给出这样的信息很正常啊!错,此刻的编译器是在试图告诉你声明于B中的f并未在D中被重新声明,而是被整个遮掩了(Item 33描述为什么会遮掩).如果忽略这个警告,几乎肯定导致错误的程序行为,然后是许多的调试行为,只为了找出编译器早就试图告诉你的事情.
你应该知道,编译器给出的信息往往和它们'看起来'的意义十分不同!不管怎么样,在你打发某个警告信息之前,请确定你了解它试图说出的精确意义.It is very important.
你也应该知道,警告信息天生和编译器相依,不同的编译器有不同的警告标准.所以草率编程后依赖编译器为你指出
错误,是非常不明智的选择.
请记住:
■ 严肃对待编译器发出的警告信息.努力在你i的编译器的最高(最严厉)警告级别下争取'无任何警告'的荣誉。
■ 不要过度依赖编译器的报警能力,因为不同的编译器对待事情的态度并不相同,一旦移植到另一个编译器上,你原本依赖的警告信息有可能消失.
可以阅读原书的内容.我只把原书中关于本款要记住的要点帖出来:
请记住:
■ C++标准程序库的主要机能是由STL,iostreams,locales组成.并包含C99标准程序库.
■ TR1添加了智能指针(例如tr1::shared_ptr)、一般化函数指针(tr1::function)、hash-based容器、正则表达式(regular expressions)以及另外10个组件的支持.
■ TR1自身只是一份规范.为获得TR1提供的好处,你需要一份实物.一个好的实物来源是Boost.
阅读原书的内容.我只把原书中关于本款要记住的要点帖出来.
请记住:
■ Boost是一个社群,也是一个网站.致力于免费、源码开发、同僚复审的C++程序库开发.Boost在C++标准化过程过
程中扮演深具影响力的角色.
■ Boost提供许多TR1组件实现品,以及其他许多程序库.
条款53:不要轻忽编译器的警告
许多程序员习惯性地忽略编译器警告.他们任务如果是问题真的很严重的话,编译器就应该给一个错误提示信息而不是警告信息.这种想法看起来似乎很合理,但是在C++语言上,我觉得编译器作者对代码即将会爆发的事情应该比你有更加深入的理解,你说呢?下面我举的这个例子是多多少少在大部人身上都发生过一个错误:
C++ Code
1 2 3 4 5 6 7 8 | struct B { virtual void f()const; }; struct D: public B { virtual void f(); }; |
大部分经验不足的程序员对这个信息的反映都是一副不以为然的态度,他们认为,D::f遮掩了B::f显然是发生了名字遮掩现象,给出这样的信息很正常啊!错,此刻的编译器是在试图告诉你声明于B中的f并未在D中被重新声明,而是被整个遮掩了(Item 33描述为什么会遮掩).如果忽略这个警告,几乎肯定导致错误的程序行为,然后是许多的调试行为,只为了找出编译器早就试图告诉你的事情.
你应该知道,编译器给出的信息往往和它们'看起来'的意义十分不同!不管怎么样,在你打发某个警告信息之前,请确定你了解它试图说出的精确意义.It is very important.
你也应该知道,警告信息天生和编译器相依,不同的编译器有不同的警告标准.所以草率编程后依赖编译器为你指出
错误,是非常不明智的选择.
请记住:
■ 严肃对待编译器发出的警告信息.努力在你i的编译器的最高(最严厉)警告级别下争取'无任何警告'的荣誉。
■ 不要过度依赖编译器的报警能力,因为不同的编译器对待事情的态度并不相同,一旦移植到另一个编译器上,你原本依赖的警告信息有可能消失.
条款54:让自己熟悉包括TR1在内的标准程序库
本款原书主要介绍了标准程序库和TR1程序库.书里面介绍的很详细,我在这里就不想再次累赘介绍了,有兴趣的可以阅读原书的内容.我只把原书中关于本款要记住的要点帖出来:
请记住:
■ C++标准程序库的主要机能是由STL,iostreams,locales组成.并包含C99标准程序库.
■ TR1添加了智能指针(例如tr1::shared_ptr)、一般化函数指针(tr1::function)、hash-based容器、正则表达式(regular expressions)以及另外10个组件的支持.
■ TR1自身只是一份规范.为获得TR1提供的好处,你需要一份实物.一个好的实物来源是Boost.
条款55:让自己熟悉Boost
本款是本书的最后一款,主要介绍了Boost库.书里面介绍的很详细,我在这里就不想再次累赘介绍了,有兴趣的可以阅读原书的内容.我只把原书中关于本款要记住的要点帖出来.
请记住:
■ Boost是一个社群,也是一个网站.致力于免费、源码开发、同僚复审的C++程序库开发.Boost在C++标准化过程过
程中扮演深具影响力的角色.
■ Boost提供许多TR1组件实现品,以及其他许多程序库.
相关文章推荐
- 【more effective c++读书笔记】【第6章】杂项讨论
- Effective C++(九)杂项讨论
- More Effective(六)杂项讨论
- Effective C++ —— 杂项讨论(九)
- <<Effective C++>>读书笔记9: 杂项讨论
- Effective C# 摘录(6) - 杂项讨论
- Effective C# 摘录(6) - 杂项讨论
- 杂项讨论
- 如何写出高效C++(定制new和delete和杂项讨论)
- Effective C++ 读书笔记(45-50):杂项讨论
- 【effective c++读书笔记】【第9章】杂项讨论
- 杂项讨论
- Effective C++读书笔记 第九部分 杂项讨论
- 现代软件工程 第九章 【项目经理】练习与讨论
- 【effective c++读书笔记】【第9章】杂项讨论
- Effective C++读书笔记---杂项讨论
- C++ 第九章 关于类和对象的进一步讨论(二)const的用法和指针数据成员
- 现代软件工程 第九章 【项目经理】练习与讨论
- effective C++: 9.杂项讨论
- Effective c++(笔记) 之 杂项讨论