title: When do we need to define destructors?
body: <p>I read that destructors need to be defined when we have pointer members and when we define a base class, but I am not sure if I completely understand. One of the things I am not sure about is whether or not defining a default constructor is useless or not, since we are always given a default constructor by default. Also, I am not sure if we need to define default constructor to implement the RAII principle (do we just need to put resource allocation in a constructor and not define any destructor?).</p>
  
  <pre><code>class A
  {
  
  public:
      ~Account()
      {
          delete [] brandname;
          delete b;
  
          //do we need to define it?
  
      };
  
      something(){} =0; //virtual function (reason #1: base class)
  
  private:
      char *brandname; //c-style string, which is a pointer member (reason #2: has a pointer member)
      B* b; //instance of class B, which is a pointer member (reason #2)
      vector&lt;B*&gt; vec; //what about this?
  
  
  
  }
  
  class B: public A
  {
      public something()
      {
      cout &lt;&lt; "nothing" &lt;&lt; endl;
      }
  
      //in all other cases we don't need to define the destructor, nor declare it?
  }
  </code></pre>