2010年11月28日 星期日

在c/c++裡盡可能的使用forward declaration

這個方法是讓你不要在.h檔裡include了一堆其他的.h檔, 好處是當其.h修改時, 並不會影響到太多的c.pp須要重新compile, 某方面也加快了build project的速度, 其最大的好處是, .h檔不會太雜亂.

作法如下(參考http://www-subatech.in2p3.fr/~photons/subatech/soft/carnac/CPP-INC-1.shtml), 其實大家都知道, 但很少人做到..

Suppose you want to define a new class B that uses objects of class A.

  1. B only uses references or pointers to A. Use forward declaration then : you don't need to include <A.h>. This will in turn speed a little bit the compilation.
      class A ;
      
      class B {
        private:
          A* fPtrA ;
        public:
          void mymethod(const& A) const ;
      } ;
      
  2. B derives from A or B explicitely (or implicitely) uses objects of class A. You then need to include <A.h>
      #include <A.h>
      
      class B : public A {
      
      } ;
      
      class C {
        private:
          A fA ;
        public:
          void mymethod(A par) ;   
      }

 

沒有留言: