`
xitonga
  • 浏览: 586110 次
文章分类
社区版块
存档分类
最新评论

effective C++: 9.杂项讨论

 
阅读更多
九、杂项讨论




条款52:写了placement new也要写placement delete


许多程序员习惯性地忽略编译器警告.他们任务如果是问题真的很严重的话,编译器就应该给一个错误提示信息而
不是警告信息.这种想法看起来似乎很合理,但是在C++语言上,我觉得编译器作者对代码即将会爆发的事情应该比你有
更加深入的理解,你说呢?下面我举的这个例子是多多少少在大部人身上都发生过一个错误:
struct B{
virtual void f()const;
};
struct D:public B{
virtual void f();
};
我现在的编译器给出了这样的警告信息:warning:D::f()hides virtual B::f()
大部分经验不足的程序员对这个信息的反映都是一副不以为然的态度,他们认为,D::f遮掩了B::f显然是发生了名
字遮掩现象,给出这样的信息很正常啊!错,此刻的编译器是在试图告诉你声明于B中的f并未在D中被重新声明,而是被整
个遮掩了(Item 33描述为什么会遮掩).如果忽略这个警告,几乎肯定导致错误的程序行为,然后是许多的调试行为,只
为了找出编译器早就试图告诉你的事情.
你应该知道,编译器给出的信息往往和它们'看起来'的意义十分不同!不管怎么样,在你打发某个警告信息之前,请
确定你了解它试图说出的精确意义.It is very important.
你也应该知道,警告信息天生和编译器相依,不同的编译器有不同的警告标准.所以草率编程后依赖编译器为你指出
错误,是非常不明智的选择.

请记住:


严肃对待编译器发出的警告信息.努力在你i的编译器的最高(最严厉)警告级别下争取'无任何警告'的荣誉。
不要过度依赖编译器的报警能力,因为不同的编译器对待事情的态度并不相同,一旦移植到另一个编译器上,你原本依赖的警告信息有可能消失.




条款54:让自己熟悉包括TR1在内的标准程序库


请记住:
C++标准程序库的主要机能是由STL,iostreams,locales组成.并包含C99标准程序库.
TR1添加了智能指针(例如tr1::shared_ptr)、一般化函数指针(tr1::function)、hash-based容器、正则表
达式(regular expressions)以及另外10个组件的支持.
TR1自身只是一份规范.为获得TR1提供的好处,你需要一份实物.一个好的实物来源是Boost.




条款55:让自己熟悉Boost


请记住:
Boost是一个社群,也是一个网站.致力于免费、源码开发、同僚复审的C++程序库开发.Boost在C++标准化过程过程中扮演深具影响力的角色.
Boost提供许多TR1组件实现品,以及其他许多程序库.
分享到:
评论

相关推荐

    C++四书五经 - 07. 杂项-02

    06 Effective C++: 50 Specific Ways to Improve Your Programs and Design (2nd Edition) 07 More Effective C++: 35 New Ways to Improve Your Programs and Designs 08 Exceptional C++: 47 Engineering Puzzles,...

    C++四书五经 - 07. 杂项-01

    06 Effective C++: 50 Specific Ways to Improve Your Programs and Design (2nd Edition) 07 More Effective C++: 35 New Ways to Improve Your Programs and Designs 08 Exceptional C++: 47 Engineering Puzzles,...

    C++四书五经 - 01. TCPL和D&E

    06 Effective C++: 50 Specific Ways to Improve Your Programs and Design (2nd Edition) 07 More Effective C++: 35 New Ways to Improve Your Programs and Designs 08 Exceptional C++: 47 Engineering Puzzles,...

    C++四书五经 - 05. 标准库

    06 Effective C++: 50 Specific Ways to Improve Your Programs and Design (2nd Edition) 07 More Effective C++: 35 New Ways to Improve Your Programs and Designs 08 Exceptional C++: 47 Engineering Puzzles,...

    C++四书五经 - 03. 高效健壮编程

    06 Effective C++: 50 Specific Ways to Improve Your Programs and Design (2nd Edition) 07 More Effective C++: 35 New Ways to Improve Your Programs and Designs 08 Exceptional C++: 47 Engineering Puzzles,...

    C++四书五经 - 04. 模板和泛型编程

    06 Effective C++: 50 Specific Ways to Improve Your Programs and Design (2nd Edition) 07 More Effective C++: 35 New Ways to Improve Your Programs and Designs 08 Exceptional C++: 47 Engineering Puzzles,...

    Effective C++ 中文版

    内容简介: 有人说C++程序员可以分成两类,读过Effective C++的和没读过的。世界顶级C++大师Scott Meyers成名之作的第三版的确当得起这样的评价。...9.杂项讨论 A 本书之外 B 新旧版条款对映 索引

    Effective C++

    条款9:避免隐藏标准形式的NEW 条款10:如果写了OPERATOR NEW就要同时写OPERATOR DELETE 条款11:为需要动态分配内存的类声明一个拷贝构造函数和一个赋值函数 条款12:尽量使用初始化而不要在构造函数里赋值 条款13:初始...

    More Effective C++

    条款9:利用 destructors 避免泄漏资源 045 Use destructors to prevent resource leaks 条款10:在 constructors 内阻止资源泄漏(resource leaks) 050 Prevent resource leaks in constructors 条款11:禁止异常...

    Effective.C++.中文第二版.50条款doc文档.chm

    Effective.C++.中文第二版,大小 1 Mb,chm 格式,作者:Scott Meyers,翻译:Lostmouse。 内容预览: 第一章 从C转向C++ 条款1:尽量用const和inline而不用#define 条款2:尽量用而不用<stdio.h> 条款3:尽量用new...

    Effective C++(第三版)

    9. 杂项讨论 miscellany 条款53:不要轻忽编译器的警告 pay attention to compiler warnings. 条款54:让自己熟悉包括tr1在内的标准程序库 familiarize yourself with the standard library, including tr1. 条款55...

    Effective c++

    提高编程效率的50条建议 条款1:尽量用const和inline而不用#define 条款2:尽量用而不用<stdio.h> 条款3:尽量用new和delete而不用malloc和free 内存管理的建议 设计与说明的建议 继承与面向对象的设计 杂项

Global site tag (gtag.js) - Google Analytics