C++ 的代码包含头文件和实现文件两部分, 头文件一般是提供给别人使用的, 但是一旦头文件发生改变,不管多小的变化,所有引用他的文件就必须重新编译,编译就要花时间。
假如你做的工程比较大(比如二次封装chrome这类的开发),重新编译一次的时间就会浪费上班的大部分时间,这样干了一天挺累的, 但是你的老板说你没有产出,结果你被fired, 是不是很怨啊。所以...
言归正传,怎样介绍编译时间呢, 我知道的就3个办法:
▷ 删除不必要的#include,替代办法 使用前向声明 (forward declared )
▷ 删除不必要的一大堆私有成员变量,转而使用 ”impl” 方法
▷ 删除不必要的类之间的继承
为了讲清楚这3点,还是举个实例比较好。
现在先假设你找到一个新工作,接手以前某个程序员写的类,如下:
// old.h: 这就是你接收的类
//
#include <iostream>
#include <ostream>
#include <list>
// 5 个 分别是file , db, cx, deduce or error , 水平有限没有模板类
// 只用 file and cx 有虚函数.
#include "file.h"// class file
#include "db.h"// class db
#include "cx.h"// class cx
#include "deduce.h"// class deduce
#include "error.h"// class error
classold : publicfile, privatedb {
public:
old( constcx& );
db get_db( int, char* );
cx get_cx( int, cx );
cx& fun1( db );
error fun2( error );
virtualstd::ostream& print( std::ostream& ) const;
private:
std::list<cx> cx_list_;
deduce deduce_d_;
};
inlinestd::ostream& operator<<( std::ostream& os,constold& old_val )
{ returnold_val.print(os);
}
这个类看完了, 如果你已经看出了问题出在哪里, 接下来的不用看了, 你是高手, 这些基