Wednesday, September 26, 2012

C++ INCLUDE Rule : Use forward declaration when possible

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) ;   
      }
      

No comments:

Post a Comment