c++ 的代码包含头文件和实现文件两部分, 头文件一般是提供给别人(也叫客户)使用的, 但是一旦头文件发生改变,不管多小的变化,所有引用他的文件就必须重新编译,编译就要花时间,假如你做的工程比较大(比如二次封装chrome这类的开发),重新编译一次的时间就会浪费上班的大部分时间,这样干了一天挺累的, 但是你的老板说你没有产出,结果你被fired, 是不是很怨啊, 如果你早点看到这段文章,你就会比你的同事开发效率高那么一些,那样被fired就不会是你了,你说这篇文章是不是价值千金!开个玩笑 :)
创新互联长期为近千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为肥西企业提供专业的网站设计、成都做网站,肥西网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。言归正传,怎样介绍编译时间呢, 我知道的就3个办法:
1. 删除不必要的#include,替代办法 使用前向声明 (forward declared )
2. 删除不必要的一大堆私有成员变量,转而使用 "impl" 方法
3. 删除不必要的类之间的继承
为了讲清楚这3点,还是举个实例比较好,这个实例我会一步一步的改进(因为我也是一点一点摸索出来了,如果哪里说错了, 你就放心的喷吧,我会和你在争论到底的,呵呵)
现在先假设你找到一个新工作,接手以前某个程序员写的类,如下
// old.h: 这就是你接收的类 // #include#include #include // 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 class old : public file, private db { public: old( const cx& ); db get_db( int, char* ); cx get_cx( int, cx ); cx& fun1( db ); error fun2( error ); virtual std::ostream& print( std::ostream& ) const; private: std::list
cx_list_; deduce deduce_d_; }; inline std::ostream& operator<<( std::ostream& os,const old& old_val ) { return old_val.print(os); }
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。