虽然传统的那种纸质书,似乎越来越不受欢迎了……
但我个人还是喜欢读纸质书,为什么呢?
因为泡一杯咖啡,拉来转椅半躺上,抱上厚得可以防身的C++书籍,把自己关在小书屋里,那种感觉简直就是觉得自己已然成为了一位高级知识分子了——另外一种情况是开着电脑,瞪着大眼看屏幕……唉,感觉全无,只能是回到现实,发现自己不过是一个可怜的程序员。
前阵子从青岛飞回厦门,我就更装逼了,直接拿了机上的一份人民日报海外版(纯英文的那种),坐在中间的位置装得很慵懒地翻阅——其实看得非常吃劲——几次都将手指头移动不懂的单词上,以为会有小窗体弹出翻译内容……不管如何,装逼效果非常好,边上两位美女直接投给我敬佩的眼光,右边那位给我留了两个QQ号,左边那位和我一路聊到厦门,最后交换手机号……
这就是知识的力量! :B
编译器也是这样子啦! 想想一个没有读过 世界顶级C++开发权威之一的牛人Scott Meyers(点击转到其主页)的《Effective C++》和《More Effective C++》两本巨著的编译器,和一个有读过这两本著作的编译器相比,真是高下立见。
前面都是废话。
打开Code::Blocks(采用中文语言包的界面),主菜单“设置” -> “编译器与调试器” ,选中GCC编译器。然后配置其编译器选项:
Enable Effective-C++ warnings....
这样配置,是让所有以后在Code::Blocks新建的,采用gcc编译器的C++项目,都会使用这个选项。如果你只是想在个别项目中使用,那么可以在具体项目中做此配置(打开工程之后,主菜单:项目->构建选项)。
有了这个选项,会带来什么好处呢?我们先考一下自己:
以上代码存在哪些设计上的隐患呢? 语法是肯定没有问题的啦,一个没有读过书的编译器,肯定会听话地编译完以上代码。
但一个有读过的书的编译器,它会给出以下警告,带上简单翻译:
||=== Temp4Book, Debug ===|
main.cpp|7|warning: 'class Person' has virtual functions and accessible non-virtual destructor
(第7行,class Person拥有一个虚函数,可是它的析构函数不是虚的! 太可怕的设计错误了)
main.cpp|21|warning: 'class Beauty' has pointer data members
(第21行,class Beauty拥有一个指针数据成员,接下一行……)
main.cpp|21|warning: but does not override 'Beauty(const Beauty&)'
(但是,你没有给Beauty定制拷贝构造函数!)
main.cpp|21|warning: or 'operator=(const Beauty&)'
(同样,也没有重载它的赋值操作符!)
main.cpp|21|warning: 'class Beauty' has virtual functions and accessible non-virtual destructor
(第21行,class Beauty同样拥有一个虚函数,可是它的析构函数不是虚的! 原因在其基类上的,呵呵。)
||=== 已完成构建: 0 个错误, 5 个警告 ===|
你不信这些警告的重要性吗?可以买前面提到的那两本书,国内有出版。这里简单一例:
-------------------------------------------------------------------------------