CodeBlock技巧 之 让编译器读懂名著

      C++领域中Scott Meyers的Effective系列可算是经典巨著(虽然比较薄,绝对含金量十足),从事C++编程的人员迟早与之相遇,阅读之后必会大大感受到这巨著的强大威力,从而在C++编程领域水平大幅提升。

      书是非常好的,可是读的懂的并非只有程序员哦,本文就来说明编译器也是可以学会这巨著的,o(∩_∩)o 哈哈。

      想想一个没有读过 世界顶级C++开发权威之一的牛人Scott Meyers(点击转到其主页)的《Effective C++》和《More Effective C++》两本巨著的编译器,和一个有读过这两本著作的编译器相比,真是高下立见。

      当然,这里笔者介绍一款开源的C++ IDE:Code::Block,只要如图设置,打开Code::Blocks(采用中文语言包的界面),主菜单“设置” -> “编译器与调试器” ,选中GCC编译器。然后配置其编译器选项:

 

这样配置,是让所有以后在Code::Blocks新建的,采用gcc编译器的C++项目,都会使用这个选项。如果你只是想在个别项目中使用,那么可以在具体项目中做此配置(打开工程之后,主菜单:项目->构建选项)。

 

有了这个选项,会带来什么好处呢?

请看代码:

#include <iostream> using namespace std; class Person { public: virtual void Say() { cout << "I am a person." << endl; } ~Person() { cout << "bye-bye person." << endl; } }; class Beauty : public Person { public: Beauty() : _p (new int) { } ~Beauty() { delete _p; } virtual void Say() { cout << "I am a beauty." << endl; } private: int* _p; }; int main() { return 0; }

 

编译链接我们的程序,会得到如下警告

 

 CodeBlock技巧 之 让编译器读懂名著_第1张图片

 

很神奇吧,读过书的编译器果然强大,这就指出了我们的代码中可能出现的问题。

翻译一下警告吧!

1、类person定义了虚函数,却没有使用虚析构函数!

2、类Beauty还有一个指针成员,但是没有重载拷贝构造函数和赋值操作!

3、类Beauty定义了虚函数,却没有使用虚析构函数!

 

 

实现良好的设计还需要我们继续努力啊!

 

 

你可能感兴趣的:(编程,gcc,delete,Class,iostream,编译器)